这似乎不起作用 - 计算文本长度

时间:2010-08-11 15:48:17

标签: jquery

这个jQuery似乎没有像我期望的那样工作:

$('#topic li a').filter(function () {
  if ($(this).text() > 410) {
    $(this).parent('li').addClass('wrap');
  }
});

如果<a href=>....</a>中的文本超过410个字符,jQuery应该可以解决,如果它应该将类.wrap添加到父li。

任何人都有任何想法,我做错了什么?

3 个答案:

答案 0 :(得分:10)

jQuery的text()函数返回一个普通的字符串 通过编写$(this).text() > 410,您将检查字符串本身是否超过410,方法是尝试将字符串解析为数字。

您需要检查字符串的长度,如下所示:

if ($(this).text().length > 410)

答案 1 :(得分:4)

$('#topic li a').filter(function () {
  if ($(this).text().length > 410) {
    $(this).parent('li').addClass('wrap');
  }
});

当你$(this).text() > 410尝试将文本转换为要比较的整数时,很可能是将长字符串转换为0之类的数字。使用.length来获取字符串的长度返回

答案 2 :(得分:2)

SLaks'答案已经很好,但我对你的代码感到困惑。

也许你想这样写,

$('#topic li a').filter(function(){
   return $(this).text().length > 410;
}).parent('li').addClass('wrap');

或使用.each()

$('#topic li a').each(function(){
  if ($(this).text().length > 410) {
    $(this).parent('li').addClass('wrap');
  }
});