Tôi đang cố gắng sử dụng jquery để viết chức năng nhanh để tính chiều rộng pixel của một chuỗi trên trang html, sau đó cắt bớt chuỗi cho đến khi đạt đến chiều rộng pixel lý tưởng ...Cắt ngắn văn bản bằng jQuery dựa trên độ rộng pixel
Tuy nhiên nó không làm việc (văn bản không cắt xén) ...
đây là mã tôi có:
function constrain(text, original, ideal_width){
var temp_item = ('<span class="temp_item" style="display:none;">'+ text +'</span>');
$(temp_item).appendTo('body');
var item_width = $('span.temp_item').width();
var ideal = parseInt(ideal_width);
var smaller_text = text;
while (item_width > ideal) {
smaller_text = smaller_text.substr(0, (smaller_text-1));
$('.temp_item').html(text);
item_width = $('span.temp_item').width();
}
var final_length = smaller_text.length;
if (final_length != original) {
return (smaller_text + '…');
} else {
return text;
}
}
đây là cách tôi gọi nó từ trang:
$('.service_link span:odd').each(function(){
var item_text = $(this).text();
var original_length = item_text.length;
var constrained = constrain(item_text, original_length,175);
$(this).html(constrained);
});
Bất kỳ ý tưởng nào về những gì tôi đang làm sai? Nếu có một cách để làm điều đó nhanh hơn (tức là loại bong bóng), điều đó cũng sẽ tuyệt vời.
Cảm ơn!
Tôi không thấy bất kỳ điều gì rõ ràng sai với các khai báo sẽ làm cho nó thất bại trên các mục tiếp theo. Bạn chắc chắn rằng công cụ chọn của bạn đang áp dụng cho nhiều mục? (Ngoài ra, xin đừng quên đánh dấu câu trả lời của tôi là giải pháp nếu bạn nghĩ nó xứng đáng =)) –
Nó hoạt động nhanh trong Safari - nhưng mất quá nhiều thời gian trong firefox ... bất kỳ cách nào để đưa ra câu lệnh trong khi hiệu quả? – novon
BTW - Tôi làm việc trên tất cả bằng cách di chuyển: var temp_item = ('' + text + ''); $ (temp_item) .appendTo ('body'); Để bên ngoài chức năng ... nhưng vấn đề tốc độ trong firefox và trình duyệt chậm hơn vẫn còn tồn tại! Cảm ơn sự trợ giúp cho đến nay – novon