我知道 .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() {
});
但无济于事。
为什么这样做以及我可以采取哪些步骤使其正常工作?
答案 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(){});