【问题标题】:jQuery doesn't recognize :not(.className) filteringjQuery 无法识别 :not(.className) 过滤
【发布时间】:2013-03-22 06:30:40
【问题描述】:

当我向元素动态添加类时,伪过滤无法识别该类。 这个问题是在我使用on()函数的时候出现的,但是当我使用live()的时候一切都很好

http://jsfiddle.net/AHyyq/1/

一开始,所有列表项都是可点击的。 但是在你按下按钮后,“Ipsum”应该不再是可点击的,并且应该不会出现另一个“Not active”消息。

$('.item:not(.active)').on('click', function(){
   $('<p>Not active</p>').appendTo('body');
});

【问题讨论】:

    标签: jquery jquery-on


    【解决方案1】:
    $('body').on('click', '.item:not(.active)', function(){
        $('<p>Not active</p>').appendTo('body');
    });
    

    【讨论】:

      【解决方案2】:

      使用$(document).on

      $(document).on('click','.item:not(.active)', function(){
         $('<p>Not active</p>').appendTo('body');
      });
      

      DEMO

      【讨论】:

        【解决方案3】:

        这是正确的行为。您正在向非活动元素(所有 3 个 .item)添加事件。 因此,如果您添加类,它不会取消绑定事件。

        我会这样做:

        $('input[type=button]').click(function(){
            $('.item:nth-child(2)').addClass('active').css('color','#F00');
        });
        
        $('.item').on('click', function() {    
            if($(this).is('.active')) return;
        
            $('<p>Not active</p>').appendTo('body');
        });
        

        http://jsfiddle.net/AHyyq/9/

        【讨论】:

          【解决方案4】:

          See here

           $(document).on('click','.item:not(.active)', function(){
             $('<p>Not active</p>').appendTo('body');
          });
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-02-09
            • 2021-02-25
            • 2018-10-10
            • 2011-06-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多