gpt4 book ai didi

javascript - 根据像素宽度使用 jQuery chop 文本

转载 作者:可可西里 更新时间:2023-11-01 01:21:46 24 4
gpt4 key购买 nike

我正在尝试使用 jquery 编写一个快速函数来计算 html 页面上字符串的像素宽度,然后 chop 该字符串直到它达到理想的像素宽度...

但是它不起作用(文本不会 chop )...

这是我的代码:

    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 + '&hellip;');
} else {
return text;
}
}

这是我从页面调用它的方式:

    $('.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);
});

关于我做错了什么的任何想法?如果有更快的方法(即冒泡排序),那也很棒。

谢谢!

最佳答案

为什么不直接使用 CSS 来指定要将此字符串放入的元素的宽度,而不是将其与脚本一起破解?您可以使用 text-overflow告诉浏览器它应该用省略号 chop 。

.truncated { display:inline-block; max-width:100px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

text-overflow 是 CSS3 声明,但在 IE 6+、WebKit 312.3+ (Safari 1.3+/Chrome) 和 Opera 9+(版本 < 10.7 需要 -o-text-overflow 声明)。

注意这个was unimplemented in Firefox直到 7.0,和 under 4%的 Firefox 用户仍在使用旧版本(主要是 3.6)。您的文本在旧版本中仍会被 chop ,只是不会呈现省略号。如果您担心这一小部分用户,可以使用 this jQuery plugin ,它在 IE/WebKit/Opera/Firefox ≥ 7 中不执行任何操作,但会在 Firefox ≤ 6 中模拟 text-overflow

关于javascript - 根据像素宽度使用 jQuery chop 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/895888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com