Sto provando a utilizzare jquery per scrivere una funzione rapida che calcola la larghezza del pixel di una stringa in una pagina HTML, quindi tronca la stringa fino a raggiungere una larghezza di pixel ideale ...Tronca il testo con jQuery in base alla larghezza del pixel
Tuttavia non funziona (il testo non tronca) ...
Ecco il codice che ho:
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;
}
}
Ecco come sto chiamando dalla pagina:
$('.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);
});
Qualche idea su cosa sto facendo male? Se c'è un modo per farlo più velocemente (es. Bubble sort), sarebbe fantastico.
Grazie!
Io non vedo nulla, ovviamente, errato con dichiarazioni che lo avrebbero fatto fallire sugli articoli successivi. Sei sicuro che il tuo selettore stia applicando a più elementi? (inoltre, per favore non dimenticare di contrassegnare la mia risposta come soluzione se pensi che lo meriti =)) –
Funziona velocemente in Safari - ma impiega troppo tempo in firefox ... in ogni modo per rendere l'istruzione while più efficiente? – novon
BTW - Ho capito tutto spostando il: var temp_item = ('' + text + ''); $ (temp_item) .appendTo ('body'); All'esterno della funzione ... ma il problema di velocità in Firefox e nei browser più lenti rimane ancora! Grazie per l'aiuto finora – novon