.live()到.on()问题

gna*_*k86 4 jquery

我有一个无法解决的问题.

这段代码非常适合我.

// click row opens message, unless you click delete    
$('.delete_message-link-js').live('click', function(e) {
    e.preventDefault();
});

$('.item-message').live('click', function(e){ //.item-message - tr lass
    window.location = $(this).find(".show_message-link").attr("href");
});
Run Code Online (Sandbox Code Playgroud)

但是,当我将.live()更改为.on()时

// click row opens message, unless you click delete
$('.delete_message-link-js').on('click', false );

$('.item-message').on('click', function(e){
     window.location = $(this).find(".show_message-link").attr("href");
  });
Run Code Online (Sandbox Code Playgroud)

我有一个Firefox的错误.当我点击表格行中的.delete_message-link-js链接时,我收到一个错误

提示中止用户
抛出Components.Exception ... by user",Cr.NS_ERROR_NOT_AVAILABLE);

但代码适用于Safari.

我做错了什么?

谢谢,抱歉我的英语

Esa*_*ija 9

阅读文档:

http://api.jquery.com/on/

从那里我们可以看到on相当于:

$('.delete_message-link-js').live('click', function(e) {
    e.preventDefault(); 
});
Run Code Online (Sandbox Code Playgroud)

是:

$( document ).on( "click", ".delete_message-link-js", function(e){
    e.preventDefault(); 
});
Run Code Online (Sandbox Code Playgroud)

等等.

您还可以阅读源代码以了解如何live转换为on:

live: function( types, data, fn ) {
    jQuery( this.context ).on( types, this.selector, data, fn );
    return this;
}
Run Code Online (Sandbox Code Playgroud)

this.contextdocument(默认上下文,因为您没有给出任何上下文),并且this.selector'.delete_message-link-js'针对上面的示例.

  • @diEcho的重点是在处理程序之后添加元素,无论如何都会警告"Esailija是对的".它不是基本的方式,它是一个"实时"处理程序,而你的是一个"静态"处理程序,它被视为基本方式. (2认同)