Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.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
Javascript 为什么JQuery live()工作而delegate()不工作?_Javascript_Jquery_Html_Onclick - Fatal编程技术网

Javascript 为什么JQuery live()工作而delegate()不工作?

Javascript 为什么JQuery live()工作而delegate()不工作?,javascript,jquery,html,onclick,Javascript,Jquery,Html,Onclick,我正在处理的代码太复杂了,所以我无法将代码粘贴到这里 但我遇到的情况是: 包含在两个不同HTML中的.js文件, 在一个html中,delegate()起作用,但在另一个html中没有任何效果。 然后我将delegate()替换为live(),然后在这两种html中都可以正常工作 我只是好奇为什么会发生这种事 这可能是因为我在两个HTML中包含了太多不同的js文件,可能会导致一些冲突 您必须记住,当您将()委托给某个元素时,调用delegate时,该元素必须存在于dom中 所以如果你打电话 $

我正在处理的代码太复杂了,所以我无法将代码粘贴到这里

但我遇到的情况是: 包含在两个不同HTML中的.js文件,
在一个html中,
delegate()
起作用,但在另一个html中没有任何效果。
然后我将
delegate()
替换为
live()
,然后在这两种html中都可以正常工作

我只是好奇为什么会发生这种事
这可能是因为我在两个HTML中包含了太多不同的js文件,可能会导致一些冲突

您必须记住,当您将()委托给某个元素时,调用delegate时,该元素必须存在于dom中

所以如果你打电话

 $('#mycontainer').delegate(....
id为mycontainer的元素必须存在,否则delegate()将无法工作。导致一些开销的一种解决方法是将任务委托给
文档
正文

 $('body').delegate()

Live()总是有效的,因为实际上您是在委托主体。

您必须记住,当您将()委托给某个元素时,调用delegate时该元素必须存在于dom中

所以如果你打电话

 $('#mycontainer').delegate(....
id为mycontainer的元素必须存在,否则delegate()将无法工作。导致一些开销的一种解决方法是将任务委托给
文档
正文

 $('body').delegate()

Live()总是有效的,因为实际上您是在向主体授权。

您能给我们两个示例的一些代码吗?您是否在另一个页面中通过AJAX重新加载设置delegate()的选择器,因为这可能是它不起作用的原因这是一个理论性太强的问题。如果你能提供js和html文件的最低版本,那将非常有帮助,这样我们可以看一下。我想在这里粘贴一些代码,但是代码太复杂了,html和js文件都有500多行,有很多动态生成的部分,这很难抽象得足够简单。你能给我们两个例子的一些代码吗?你是否在另一页通过AJAX重新加载你设置的delegate()选择器,因为这可能是它不起作用的原因这是一个有点理论性的问题。如果您提供js和html文件的最低版本,这将非常有帮助,因此我们可以看一看。我想在这里粘贴一些代码,但是代码太复杂了,html和js文件都有500多行,有许多动态生成的部分,很难抽象得足够简单。谢谢!我认为第一点可能是原因。我认为delegate()只是live()的一个更有效的替代品。我没有注意到delegate()需要已经设置元素。谢谢!我认为第一点可能是原因。我认为delegate()只是live()的一个更有效的替代品。我没有注意到delegate()需要已经设置元素。