Jquery.on vs.live
我知道Jquery.on vs.live,jquery,Jquery,我知道.live()现在已被弃用,但我似乎无法更改它并保留其功能 我只是有一个关于jQuery中的.on()函数的快速问题。我目前正在使用.live() 像这样: $('table tr th').live("click", function() { }); 但是,当我尝试用.on()替换.live()时,它不再像预期的那样工作 我试着把它放进去 $('table tr th').on("click", function() { }); 以及 $('table tr').live("clic
.live()
现在已被弃用,但我似乎无法更改它并保留其功能
我只是有一个关于jQuery中的.on()
函数的快速问题。我目前正在使用.live()
像这样:
$('table tr th').live("click", function() {
});
但是,当我尝试用.on()
替换.live()
时,它不再像预期的那样工作
我试着把它放进去
$('table tr th').on("click", function() {
});
以及
$('table tr').live("click", "th", function() {
});
及
但是没有用
这是为什么?我可以采取哪些步骤使其正常工作?我猜您是在向表中添加
tr
元素,而不是th
$('table').on("click", "tr th", function(){});
试试这个:
$('table tr th').live("click", function() {
应该是
$(document).on("click", "table tr th", function() {
这就是您将如何准确地模拟.live
调用的方式。当然,您可以根据DOM结构将选择器从文档限制为更有意义的内容
编辑:
仅澄清一下,在您的示例中,您需要使用$(document)。在(…
上,因为该表没有任何父表,并且在页面生命周期内被替换。在()上的函数需要语法更新,您应该将代码更改为:
$('body').on("click", "table tr th", function()...
查看本文了解更多信息:确保初始加载页面时所选元素(th/tr)存在。
如果稍后将此选择器添加到DOM中,则新的.on将不起作用
试一试
@FelixKling的可能重复我正试图避免使用$(document)
来精确模拟调用。我想知道是否有其他方法更符合jQuery API站点上的示例。只需使用最接近的现有元素(祖先)(这将更对应于。然后委派)。从数组生成
并写入表的第一个
中。但是,您的解决方案不起作用…这不起作用,他的表将使用.replaceWith()
进行替换,因此,因为我在需要使用$(文档)的代码中替换表
这样调用就可以在整个过程中继续工作?@Andrew:不,层次结构中的任何现有元素都可以。如果事件不能附加到元素本身,则必须附加到层次结构中始终存在的较高元素。如文档顺序体。
$('body').on("click", "table tr th", function()...
$('body').on('click', 'thesSelectorForYourTriggerElement', function(){
//callback
});