jQuery live() - alert()有效,但不是addClass

时间:2018-02-27 19:44:09

标签: jquery click live

此代码适用于jQuery 1.7.2:

    $('.category').live('click', function() {
        alert('clicked');
    });

但是当我切换到使用addClass时,没有添加任何类:

    $('.category').live('click', function() {
        $(this).addClass('active');
    });

任何人都可以建议为什么以及如何使用live()来做到这一点?感谢。

更新: 我切换到2.2.4版本的jquery并更改了on()函数的live()函数。当我定位动态创建的链接或不动态创建的DOM元素时,警报会起作用。但是,addClass()仅在我定位*未动态创建的元素时才有效,并且检查器显示为这些元素添加了活动类,但未添加到动态创建的链接中。

1 个答案:

答案 0 :(得分:0)

引用MDN Docs:

  

从jQuery 1.7开始,不推荐使用.live()方法。使用.on()来   附加事件处理程序。旧版jQuery的用户应该使用   .delegate()优先于.live()。

由于该方法已弃用,因此在某些情况下其功能可能已被破坏。您应该使用.on将任何事件绑定到元素。

$('.category').on('click', function() {
  $(this).addClass('active');
});
.active{
  background-color:red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

<div class="category">Some Content</div>