Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.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 如果删除并重新添加同一个div,jQuery是否无法找到它?_Javascript_Jquery_Html - Fatal编程技术网

Javascript 如果删除并重新添加同一个div,jQuery是否无法找到它?

Javascript 如果删除并重新添加同一个div,jQuery是否无法找到它?,javascript,jquery,html,Javascript,Jquery,Html,我试图将不同的内容加载到一个div中,我的刷新代码与此非常相似:但更复杂,它需要考虑填充和magin等 不同之处在于,在我的实际代码中,我使用.load()将内容馈送到我的div中,而不是使用empty()和append() 当我的页面第一次加载时,我调用我的resizeContainer()函数来动态呈现我的布局设置div的大小,一切看起来都很好。我看了firebug,这就是我得到的(所有尺寸都在那里,由我的函数设置): 但是,如果我只需单击两次以将其切换回原始内容,则我的resizeCont

我试图将不同的内容加载到一个div中,我的刷新代码与此非常相似:但更复杂,它需要考虑填充和magin等

不同之处在于,在我的实际代码中,我使用.load()将内容馈送到我的div中,而不是使用empty()和append()

当我的页面第一次加载时,我调用我的resizeContainer()函数来动态呈现我的布局设置div的大小,一切看起来都很好。我看了firebug,这就是我得到的(所有尺寸都在那里,由我的函数设置):

但是,如果我只需单击两次以将其切换回原始内容,则我的resizeContainer函数将不会渲染任何内容

在过去的5个多小时里,我一直在努力解决这个问题,我尝试使用:

  • 空,追加
  • 分离
  • 以多种不同的方式调用resize函数
  • 以多种不同的方式调用自定义resizeContainer函数
  • 将以上所有内容和更多内容结合起来
我注意到,在加载我的内容后,jQuery无法找到重新插入的div。。。这就解释了为什么我的resizeContainer函数无法正确设置宽度和高度。。。但是为什么呢?我可以在屏幕上的div和firebug中看到它

这是我交换内容后看到的,显然样式不存在,因为我的自定义resizeContainer函数找不到div

<div id="divWrapper" class="fullscreen">
  <div id="divTop" class="Top " style="height: 0px;"> </div>
  <div id="divContainer" class="Container round" style="width: 1024px; height: 560px;">
    <div id="divContent" class="Content round" onclick="javascript: jQfn.testclick();"> Content </div>
    <div id="divQuery" class="Query round" onclick="javascript: jQfn.testclick();"> Query </div>
    <div id="divStatus" class="Status " onclick="javascript: jQfn.testclick();" style="width: 701px; float: left;"> Status </div>
  </div>
</div>

有什么不对劲吗?在加载新内容之前,我甚至尝试手动分离这些div。

Load是一种Ajax方法,在使用Ajax方法而不是append方法时,从外部文件插入内容。在大多数情况下,您必须使用jQuery的live();以获得对插入的DOM元素的访问权


使用Ajax第一次插入内容后,请尝试使用detach和一个append方法(而不是Ajax)重新插入内容,否则它将不起作用,因为load只是重新插入新的DOM元素,而不是刚刚分离的内容。

+1,另外,您还可以使用.delegate()而不是.live()特别是如果事件传播的效率或管理对应用程序很重要的话。我试过使用.live(),看起来它不是重新插入到DOM中了吗<代码>代码jQ('#divContainer').load('busy.jsp');jQ(“#divContent”).live('resize',jQfn.resizeContent);log(jQ(“#divContent”);jQfn.resizeContent=function(){alert('helloworld');}它仍然无法正确抓取div。
jQfn.testclick = function(){
  if (jQ.busy == true) {
     console.log('Using busy.jsp');
     jQ('#divContainer').load('busy.jsp');
     jQ.busy = false;
  } else {
     console.log('Using login.jsp');
     jQ('#divContainer').load('login.jsp');
     jQ.busy = true;
  }
  jQ(window).trigger('resize');
}
<div id="divWrapper" class="fullscreen">
  <div id="divTop" class="Top " style="height: 0px;"> </div>
  <div id="divContainer" class="Container round" style="width: 1024px; height: 560px;">
    <div id="divContent" class="Content round" onclick="javascript: jQfn.testclick();"> Content </div>
    <div id="divQuery" class="Query round" onclick="javascript: jQfn.testclick();"> Query </div>
    <div id="divStatus" class="Status " onclick="javascript: jQfn.testclick();" style="width: 701px; float: left;"> Status </div>
  </div>
</div>
var content = jQuery('#divContent');
console.log(content);