Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery.on vs.live_Jquery - Fatal编程技术网

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
});