Jquery .on与.live

我知道.live()现在已被弃用,但我似乎无法改变它并保留function。

我只是对jQuery中的.on()函数有一个简单的问题。 我目前正在使用.live()

像这样:

 $('table tr th').live("click", function() { }); 

但是,当我尝试用.on()替换.live() ,它不再像预期的那样工作。

我试过投入

 $('table tr th').on("click", function() { }); 

以及

 $('table tr').live("click", "th", function() { }); 

 $('table tr').delegate("th", "click", function() { }); 

但无济于事。

为什么这样做以及我可以采取哪些步骤使其正常工作?

on()函数需要语法更新,您应该将代码更改为:

 $('body').on("click", "table tr th", function()... 

有关更多信息,请查看此文章: http : //www.andismith.com/blog/2011/11/on-and-off/

试试这个:

 $('table tr th').live("click", function() { 

应该

 $(document).on("click", "table tr th", function() { 

这就是你完全模仿.live调用的方式。 当然,您可以根据DOM结构将选择器从文档限制为更有意义的选择。

编辑:

只是为了澄清,在您的示例中,您需要使用$(document).on(...因为该表没有任何父项,并且在页面生命周期内被替换。

确保在最初加载页面时存在所选元素(th / tr)。 如果稍后将此选择器添加到DOM,则新的.on将无法工作。

尝试

 $('body').on('click', 'thesSelectorForYourTriggerElement', function(){ //callback }); 

我猜不到你在表中添加了tr元素,而不是。

 $('table').on("click", "tr th", function(){});