'p`的长度,在父`div` jQuery中改变`class`

时间:2015-09-25 23:04:03

标签: jquery html css

我正在尝试调整父height的{​​{1}},具体取决于其子div的文字长度。我通过应用p.descr来实现这一点,而class又在CSS中具有不同的height。在下面找到jQuery代码:



$(document).ready(function(){  
  $('p.descr').each(function(){
        if($(this).text().length < 90){
          $(this).parent().addClass('bigP90');
        } if($(this).text().length [90,180]) {
          $(this).parent().addClass('bigP180');
        } if($(this).text().length [181,270]) {
          $(this).parent().addClass('bigP270');
        } if($(this).text().length [271,360]) {
          $(this).parent().addClass('bigP360');
        } if($(this).text().length > 360) {
          $(this).parent().addClass('bigP450');
        }
  });
});
&#13;
&#13;
&#13;

问题在于class bigP90bigP450已应用且工作正常,但不是中间的。这意味着语法有问题,但无法弄清楚是什么。谢谢。

1 个答案:

答案 0 :(得分:2)

length [90,180]不测试长度是否在90180之间。方括号用于访问数组元素或对象属性,因此将length视为数组并尝试访问数组的第180个元素。

在Javascript中测试范围没有简短的语法。您只需测试它是否高于下限,也低于上限,例如

if (val >= 90 && val < 180)

但由于您已使用之前的if测试了下限,因此您可以使用else if来测试下一个上限,下限测试将是多余的。

$(document).ready(function() {
  $('p.descr').each(function() {
    var len = $(this).text().length;
    var parent = $(this).parent();
    if (len < 90) {
      parent.addClass('bigP90');
    }
    else if (len < 180) {
      parent.addClass('bigP180');
    }
    else if (len < 270) {
      parent.addClass('bigP270');
    }
    else if (len < 360) {
      parent.addClass('bigP360');
    }
    else {
      parent.addClass('bigP450');
    }
  });
});