Jquery .on与.live

时间:2011-12-12 16:51:30

标签: jquery

我知道 .live()现已弃用,但我无法改变它并保留其功能。

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

像这样:

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

但是,当我尝试将.live()替换为.on()时,它不再像预期的那样有效。

我尝试过进入

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

以及

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

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

但无济于事。

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

4 个答案:

答案 0 :(得分:31)

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

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

查看此文章了解更多信息:http://www.andismith.com/blog/2011/11/on-and-off/

答案 1 :(得分:10)

试试这个:

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

应该是

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

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

编辑:

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

答案 2 :(得分:2)

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

尝试

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

答案 3 :(得分:0)

我猜不到你要在表格中添加tr元素,而不是th

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