如何以及时的方式运行多个不相交的AJAX生成的Javascripts?

时间:2014-01-03 18:31:33

标签: javascript ajax jquery

在将其标记为重复之前,请仔细阅读,因为它不是重复的。

我有这个应用程序是AJAX调用生成多个HTML部分(包装器div)和每个部分相关的JS(包装div)。感谢前面提到的问题,一旦响应来自使用Jquery filter()或find()方法的AJAX调用,我设法让HTML部分的不同部分填充适当的目标Div。但这需要处理HTML部分。关联的JS怎么样?这真的不像在本网站的不同帖子中给出的一些建议那么简单。原因如下:

服务器生成的HTML / JS如下所示:

 <div id='div1'>
   server generated HTML markup here... A lot here...
    ...
 </div>
 <script> ... server generated Javascript here applicable to div1 </script>

 <div id='div2'>
   server generated HTML markup here... A lot here...
   ...
 </div>
 <script> ... server generated Javascript here applicable to div2 </script>

为了填充不同的div,我使用JQuery“find”来提取标签,但“find”和filter()都剥离了脚本标签。我读到的一个工作是将整个响应转储到一个虚拟的隐藏div中,然后从那里处理它。问题是,一旦AJAX响应填充了这个虚拟div,并且在将HTML部分移动到适当的div目标之前,JS就会过早地执行。

所以,我想到了一个简单的伎俩。我没有在服务器上生成脚本标签,而是在服务器上生成一些虚拟标签,如

  <section1_script>....JS.... </section_script> 

而不是如上所示的常用脚本标记。 JS现在成为一些非活动代码文本,直到包装在正确的脚本标记中。我现在可以将整个AJAX响应分配给一个字符串,使用JQuery的find()和html()提取JS脚本并将其包装在一个正确的脚本中,然后将它转储到右边的部分之后填充部分的标记,这样它就会得到它在合适的时间执行。

问题:这是一种错综复杂的方法,如果是这样,那么什么是更好,更清洁或更可接受的方法?请记住,不是脚本的提取使事情复杂化。这是脚本的及时执行以及.html()剥离脚本的限制,这些脚本驱动了这种错综复杂的逻辑。

0 个答案:

没有答案