2

我知道 .live() 已从 jQuery 1.9 中删除,应该使用 .on() 代替。到目前为止,如果选择器是一个字符串, .on() 对我来说非常有效。例如,

$("a.offsite").live("click", function(){ alert("Goodbye!"); });

转换成

$(document).on("click", "a.offsite", function(){ alert("Goodbye!"); });

但是如何将 .on() 用于 JQuery 选择器对象(或对象集合),如下所示?

var jele = $('.nav').find("a.offsite");
$(jele).live("click", function(){ alert("Goodbye!"); });

转换成

var jele = $('.nav').find("a.offsite");
$(document).on("click", jele, function(){ alert("Goodbye!"); });

上面的代码转换正确吗?我遇到的问题是绑定到同一事件的其他事件处理程序,但在事件触发时也会执行不同的选择器。因此我怀疑这不是正确的方法,但我在官方文档中找不到任何类似的例子。

我知道我可以将选择器字符串而不是 jele 对象传递给 .on() 方法,但在某些情况下,我根本无法访问选择器字符串,例如。当 jele 对象作为参数传递给发生绑定的函数时。

4

3 回答 3

0

Once you've got the JQuery jele object, try to call the .on() function on jele:

$(jele).on("click", your-code-here);

Other way to do it is having the selector string of jele. Check out this post I found about retrieving the selector string of any JQuery object. Once you have the jele selector string, your code should be as follows:

$(document).on("click", selector, your-code-here);
于 2013-05-22T09:00:39.313 回答
0
$(jele).on("click", function(){ alert("Goodbye!"); });
于 2013-05-22T09:17:30.570 回答
0

.on()替换.bind(),.live().delegate()

用法:

$('div').on('click',function(){/* ... */}); //equivalent to .bind()

这 3 行是等效的:

$('a','#menu').live('click',function(){/* ... */});
$('#menu').delegate('a','click',function(){/* ... */}); 
$('#menu').on('click','a',function(){/* ... */}); 
于 2013-05-22T09:28:59.960 回答