jquery计算字符和addclass不工作

时间:2015-04-17 10:02:36

标签: javascript jquery

我有一些我在这里找到的JavaScript,但我似乎无法让它工作。

我有一个带有id'最新版本的h1'如果少于21个字符,则应该具有类pt45。



// The number of characters
    var yourElement = $('h1.latest');
    var charLength = yourElement.text().length;
    if(charLength < 20){
       yourElement.addClass('pt45');
    }
&#13;
.pt45 {
    font-size: 10px;
    color:red;
}
&#13;
<h1 class="latest">123456789</h1>
<h1 class="latest">123456789123456789123456789123456789</h1>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:6)

  var yourElement = $('h1.latest');

这将返回一个包含匹配NodeList的jQuery对象。

yourElement.text().length;会给出两个,因为你有两个h1

相反,它必须是:

&#13;
&#13;
 jQuery("h1.latest").each(function() {
    if(jQuery(this).text().length < 21 ) {
       jQuery(this).addClass("pt45")
    }
 });
&#13;
.pt45 {
    font-size: 10px;
    color:red;
}
&#13;
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>


<h1 class="latest">123456789</h1>
<h1 class="latest">123456789123456789123456789123456789</h1>
&#13;
&#13;
&#13;

您必须迭代Nodelist并检查长度

答案 1 :(得分:0)

$('h1.latest')该对象选择具有类latest的所有h1元素。使用$(this)进行当前对象选择,并在每个循环中使用itreate

$('h1.latest').each(function() {
    if($(this).text().length < 20){
        $(this).addClass('pt45')
    }
});

Fiddle

答案 2 :(得分:0)

根据jquery文档,您可以看到.addClasss()方法可以将函数作为回调函数,您可以从中返回值。所以不要在每个h1.latest上循环,而只返回要添加的类。

试试这个:

&#13;
&#13;
$('h1.latest').addClass(function() {
   return this.textContent.length < 20 ? "pt45" : "";
});
&#13;
.pt45 {
  font-size: 10px;
  color: red;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1 class="latest">123456789</h1>
<h1 class="latest">123456789123456789123456789123456789</h1>
&#13;
&#13;
&#13;