Bir html sayfasındaki bir dizenin piksel genişliğini hesaplayan hızlı bir işlev yazmak için jquery'yi kullanmaya çalışıyorum, sonra da ideal bir piksel genişliğine ulaşana kadar dizgiyi keser ...Piksel genişliği temel alınarak jQuery ile metin kırpma
o (metin kesecek değil) çalışmıyor Ancak ... İşte
olan kod ben: İştefunction 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;
}
}
ben sayfasından arıyorum açıklanmıştır:
$('.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);
});
Neyi yanlış yaptığım hakkında bir fikrin var mı? Bunu daha hızlı yapmak için bir yol varsa (yani baloncuğu), bu da harika olurdu.
Teşekkürler! Bu satırda
Hiçbir şey açıkçası göremiyorum sonraki öğelerde başarısız olmasına neden olan beyanlarla yanlış. Seçicinizin birden çok öğeye uygulandığından emin misiniz? (Ayrıca, lütfen bunu hak ettiğini düşünüyorsanız bir çözüm olarak bir çözüm olarak işaretlemeyi unutmayın =)) –
Safari'de hızlı çalışıyor, ancak Firefox'ta çok uzun sürüyor ... while ifadesini daha fazla yapmak için herhangi bir yol verimli? – novon
BTW - Aşağıdakileri taşıyarak çalışıyorum: var temp_item = ('' + text + ''); $ (temp_item) .appendTo ('body'); İşlev dışına ... ama firefox ve yavaş tarayıcılarda hız sorunu hala devam ediyor! Şu ana kadarki yardım için teşekkürler: – novon