javascript - AJAX 不会覆盖已经加载的脚本?

标签 javascript jquery html ajax jquery-ui

我使用的是 jquery-ui-widget 的一个版本,1.10.3,它适用于 ajax 加载的页面片段 #1,但如果片段#2 之后加载,则会触发页面片段#2 的错误/strong> 片段#1。

这很奇怪,因为即使我在 ajax 加载片段 #2 时尝试用 1.8.21 覆盖 1.10.3(是的,我意识到这是一个糟糕的 hack ),使用小部件工厂的代码仍会尝试使用 1.10.3,因此会导致错误。

请注意,这不是正常页面加载期间的问题,因为 1.8.21 在我的 ajax div id="ajax_content" 之外每次都会加载。

如何在 ajax 期间覆盖 1.10.3

<html>
   <div id="ajax_content">
       Page fragment #1 content
      <script src="jquery-ui-widget.1.10.3.js"></script>
   </div
   <script src="jquery-ui-widget.1.8.21.js"></script>
</html>

对比

<html>
   <div id="ajax_content">
       Page fragment #2 content
       <script src="jquery-ui-widget.1.8.21.js"></script> 
       //having this script here or not has no effect if 1.10.3 was already loaded
   </div>
   <script src="jquery-ui-widget.1.8.21.js"></script>
</html>

最佳答案

jquery-ui-widget 版本 不会有效果。相反,您的问题的原因是添加到您的 div id="ajax_content"innerHTML 的脚本将不会执行。

动态添加的脚本(可能作为 ajax 请求的响应接收或使用 js 或 jQuery 动态添加到 innerHTML)不执行。此外,根据@Kevin B 的评论,不推荐。我通过以下两种解决方案之一解决了同样的问题:

  1. 首先加载整个脚本
  2. 使用 head 标签中的脚本加载新页面

您可能不同意这里的第二个解决方案,说问题是关于作为 ajax 响应收到的脚本,而我建议您重新设计您的方法并改用单独的页面。由于各种原因,这可能不适合您的场景,但如果阻止您这样做的唯一原因是这会导致代码重复,那么您可以探索使用类似 jsp:include.

关于javascript - AJAX 不会覆盖已经加载的脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20612505/

相关文章:

javascript - 什么规则管理内联 jslint 指令

javascript - 对象作为 jQuery.fn 原型(prototype)?

javascript - Phonegap 存储无法正常工作

html - Twitter Bootstrap 的文本输入呈现问题

javascript - 使用 CSS、JavaScript 或 jQuery 在鼠标悬停时更改字词?

javascript - 这个函数的递归有什么问题? (setTimeout问题)

php - 在 jQuery 函数中使用 smarty 变量

javascript - 禁用 Javascript 时禁用 HTML 代码部分

python - 如何修复,TypeError : unsupported operand type(s) for %: 'NoneType' and 'int'

javascript - 我可以将参数直接传递给 .js 文件,以及如何获取值