【问题标题】:Loop through captions and do something to all captions over certain character length jquery遍历字幕并对特定字符长度的所有字幕做一些事情
【发布时间】:2013-05-29 00:40:19
【问题描述】:

我知道如何计算字符:$('.caption-text p').text().length,我知道向元素添加一个类:$('.caption-text p').css('color', "yellow");,我很确定我知道如何编写 if,或者至少我希望如此。但我无法将所有这些都连接到一个循环中。

我需要遍历所有 .caption-text 段落标签,并为少于 5 个字符的部分添加颜色。

我想我已经很接近了,但非常感谢任何帮助!!!

captions = $('.caption-text p');
captions.each(function(){
  if (captions.text().length < 5){
    $(this).css('color', "yellow");
  }

【问题讨论】:

    标签: javascript jquery loops each


    【解决方案1】:

    您需要在每个循环中引用this

    captions = $('.caption-text p');
    captions.each(function(){
      if ($(this).text().length < 5){
        $(this).css('color', "yellow");
      }
    });
    

    http://jsfiddle.net/2PYgh/1/

    【讨论】:

    • 你不需要弄乱this(如果你想调用另一个函数来改变this的含义)。你可以改为...each(function(index,element){ /* element is the element for this iteration */ })
    • @ShadowCreeper,在each 循环中,this 将引用当前元素。是的,你可以命名它,但这确实超出了这个问题的范围,在这种情况下是不必要的。
    • @smemy 你是对的,this 指的是元素,但是jQueryeach 函数被构建为将它作为参数传递。您可能认为jQuery('.foo').each(my.namespace.FooHandler.handleFoo); 会有不同的this(例如my.namespace.FooHandler)。如果您使用each 方法提供的参数,您将消除围绕this 定义的歧义。
    • @ShadowCreeper,jquery 每个循环几乎总是非常小,并且没有太多歧义 - 至少在我看来,在这种情况下,没有理由让它更冗长.无论您是否命名,this 都将引用循环内的当前元素(它不会是循环外的持久化 this 值)。唯一需要创建另一个指向该元素的指针的情况是,如果每个函数中有另一个(子函数)并且需要从该函数中访问它。
    猜你喜欢
    • 2014-12-29
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    相关资源
    最近更新 更多