【问题标题】:jquery each match not workjquery每个匹配都不起作用
【发布时间】:2011-10-25 09:49:37
【问题描述】:

无论如何,我想做一个判断,如果 div 的 id 匹配某些东西,那么就给它添加类。我的代码在这里,但每个匹配都不起作用。请帮忙,谢谢。

<script>
$(document).ready(function(){
    var num = '3';
    $('.ddd').each(function(){
        if($(this).attr('id').match(/^'id'+num$/)){
            $(this).addClass('eee');
        }
    });
});
</script>
<style>
.ddd{float:left;display:block;background:#9FF;width:50px;height:50px;margin:10px;}
.eee{background:#F36!important;}
</style>
<div class="ddd" id="id1"></div>
<div class="ddd" id="id2"></div>
<div class="ddd" id="id3"></div>
<div class="ddd" id="id4"></div>
<div class="ddd" id="id5"></div>
<div class="ddd" id="id6"></div>
<div class="ddd" id="id7"></div>

【问题讨论】:

    标签: jquery regex match each


    【解决方案1】:

    更新:

    var num = '3';
    $('#id' + num).addClass('eee');
    

    您可以简单地使用starts with selector ^= 并像这样应用类:

    $('div.ddd[id^="id"]').addClass('eee');
    

    这会将eee 类应用于所有具有id 属性以文本id 开头的元素:)

    【讨论】:

    • 但他不只是想让第三个上课吗?
    • @Sarfraz, @Royi Namir,对不起我的错误,我只想匹配 div 匹配 id + num(num 可能是 1 2 或 3... 就像我一样,所以只有一个 div添加类)谢谢。
    • @Manuel:不像我看到的那样。 OP可以进一步说明:)
    • $('div.ddd[id^="id'+num+'"]').addClass('eee');
    【解决方案2】:

    您可能应该听所有这些人说您应该使用实际的 id (#id) 选择器或属性 ([attribute=value]) 选择器,但是为了回答您的问题,我将指出您的问题做错了。
    在创建需要在其中封装变量的“动态”正则表达式时,您应该使用new RegExp 构造函数而不是内联语法/rule/。此外,如果你只是想测试某个东西是否是一个正则表达式,你可能应该使用正则表达式的test 方法。 :

    var num = '3';
    var regex = new RegExp('^id' + num + '$');
    $('.ddd').each(function(){
        if(regex.test($(this).attr('id'))){
            $(this).addClass('eee');
        }
    });
    

    【讨论】:

    • 对不起大家。但是我应该更正标记为正义的正确答案,因为id^="id'+num+'"也会匹配哪个id是id30,id31...所以我还是喜欢正则表达式。
    【解决方案3】:
    $(document).ready(function(){
        var num = '3';
        $('.ddd').each(function(){
            if($(this).attr('id').match(/^id[0-9]+$/)){
                $(this).addClass('eee');
            }
        });
    });
    

    【讨论】:

      【解决方案4】:
      <script>
      $(document).ready(function(){
          var num = '3';
          $(".ddd[id='id'"+num+"']").addClass('eee');
          });
      

      【讨论】:

        【解决方案5】:
        $(document).ready(function(){
            var num = '3';
            $('.ddd[id^="id'+num+'"]').addClass('eee');
        });
        

        【讨论】:

          【解决方案6】:

          保持简单:)

          $(document).ready(function(){
              var num = '3';
              $('.ddd#id' + num).addClass('eee');
          });
          

          【讨论】:

            猜你喜欢
            • 2014-08-31
            • 1970-01-01
            • 1970-01-01
            • 2012-04-01
            • 1970-01-01
            • 2016-02-18
            • 1970-01-01
            • 1970-01-01
            • 2018-06-20
            相关资源
            最近更新 更多