jquery后期绑定

and*_*gor 10 javascript jquery

我有一个代码在页面加载时绑定点击操作,它是一个链接.当我点击它时,它发送ajax请求并用jquery append()函数替换某些div中的内容.这个新内容有一个链接,我需要为它们绑定一些动作,但我不能..绑定我认为没有用,因为jquery追加不更新DOM树.我怎么能得到一个后期绑定?

Bro*_*ier 14

有3个功能可以做到这一点:

  • $(selector).live(events, data, handler);- jQuery 1.3+ - 不推荐使用的版本:1.7,删除:1.9(参考)
  • $(document).delegate(selector, events, data, handler);- jQuery 1.4.3+ - 从jQuery 1.7开始,.delegate()已被.on()方法取代.(参考)
  • $(document).on(events, selector, data, handler);- jQuery 1.7+ - 首选(参考)

通常建议使用on(),它的使用是简单的,可能是首选的方式.

  1. 第一个选择器在调用函数时必须存在,并且可能不会被删除或事件也将消失(这可能是document).
  2. 第一个参数是事件(例如"点击")
  3. 第二个参数是要绑定事件的选择器.
  4. 最后,您可以为事件添加一些自定义数据和函数.

这是一些示例代码:

// Make sure the DOM is ready
$(function() {
    // Bind the click event to the function
    $(document).on("click", "a.class", function(event) {
        // Put your code here.
    });
});
Run Code Online (Sandbox Code Playgroud)


Cor*_*lou 11

现在可以通过使用jQuery的live()事件来获得后期绑定:

$('a.my-links-class').live('click', function() {
    // do your link action here
});
Run Code Online (Sandbox Code Playgroud)

  • 你应该使用`on()`而不是`live()`. (9认同)

Mau*_*ark 5

.live()事件被弃用从verions 1.9了.

对于使用更高版本的Jquery的人来说,他们可以使用.on()事件,它的工作方式也相同.


小智 5

方法.liveinJQuery 1.9已弃用。所以现在你可以这样做:

$("body").on("click", ".classname", function() { ... })
Run Code Online (Sandbox Code Playgroud)