【问题标题】:Jquery script don't work on loaded pageJquery 脚本在加载的页面上不起作用
【发布时间】:2010-08-28 07:17:28
【问题描述】:

在我的网络应用程序中,我有一个加载另一个页面的 div:$('#main').load('pages/main.php');

main.php 包含 jquery 验证脚本。如果我直接转到主 php,则此脚本有效,但如果我将在加载 main.php 的索引页面上使用此页面,则此脚本无效。

我该如何解决这个问题?

提前致谢。

【问题讨论】:

  • 使用 Fiddler/Firebug 观察 HTTP 请求并查看响应。在此处发布。

标签: php jquery jquery-validate


【解决方案1】:

我最终使用 .livequery() 来解决这个问题! :)

看看。

http://plugins.jquery.com/project/livequery/

包含插件,然后你的 index.php 中需要这样的东西

<script type="text/javascript">
$(document).ready(function(){

            $('#yourInputField') 
              .livequery(function() { 
                 $('#yourInputField').YourValidatorPlugin(); 
        });
});
</script>

【讨论】:

  • 谢谢。但是,我将使用 .live() - 它构建在 livequery 的模拟中
【解决方案2】:

正如 Inrbob 指出的那样,问题在于将内容加载到元素中不会加载也不会执行脚本元素。将新脚本应用到页面的适当方法是实现:

var s = $("<script src='" + script_location_for_validation + "'/>");
$("body").append(s);

这将延迟加载 javascript 并将您的代码保留在页面之外(如果您想使用缓存来提高以后页面加载的速度,这一点很重要)。

顺便说一句,将库和脚本放在页面末尾是一种很好的做法,这样它们就不会阻止其他下载或呈现。

【讨论】:

  • 我很难让它在所有 IE 中工作,但我正在从头部和身体中拉回脚本;有些是外部文件,有些是内联文件。如果此方法适合您(即您始终知道要拉取的页面上有哪些脚本),您可以将代码添加到 .load() 回调中,以便在加载数据后立即运行脚本。
  • @lnrbob 在我最近从事的所有项目中,IE6 被认为是最终被淘汰的磨石。 IE7 和 IE8 应该能正确处理它。 @dsplatonov 正如 lnrbob 所暗示的那样,如果您无法控制请求另一端的代码,则此解决方案不会为您做任何事情。
【解决方案3】:

很简单

  1. 在外部文件中保存所有使用 main.php 的 javascript 函数并将其包含在当前页面中。
  2. 将内容加载到 div 中。
  3. 调用相应的函数。

它会很有效的。

【讨论】:

    【解决方案4】:

    .load() 不会撤回脚本。这是docs 中默认功能的一部分

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-02
      • 2018-01-09
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      • 2012-06-08
      相关资源
      最近更新 更多