【问题标题】:JS codes dosen't work in loaded content, when using jquery ajax load function使用 jquery ajax 加载功能时,JS 代码在加载的内容中不起作用
【发布时间】:2014-09-25 10:33:26
【问题描述】:

我有 2 页,1.first.html,2.second.html(带有简单的 html 标记)。 在这两个页面中,我都有一个 div#container。

我在页面底部链接了两个页面中的 .js 文件(jquery、app、插件) 我在 first.html 中有一个锚链接(链接到 second.html),我用 jquery 处理了锚上的点击事件,我的代码如下所示:

$('a').on('click', function(){
    $('#container').load($(this).attr('href') + ' #container');
});

上面的代码可以工作,但是 js 代码(用于加载的内容)不工作。 (例如我在 second.html 中使用了验证插件,或者在 second.html 中使用 ajax 提交了一些数据) 关键是,如果我重定向到 second.html(不使用 ajax),所有代码都可以正常工作!

以下是来自 api.jquery.com 的关于加载函数的文字:

当使用没有后缀选择器的 URL 调用 .load() 时 表达式,内容在脚本被传递之前传递给 .html() 删除。这会在脚本块被丢弃之前执行它们。如果 .load() 是在 URL 附加一个选择器表达式的情况下调用的, 但是,在更新 DOM 之前,脚本会被删除, 因此没有被执行

我该如何解决这个问题?任何替代方式?或者...

【问题讨论】:

    标签: jquery asp.net ajax load


    【解决方案1】:

    为什么不直接在首页加载脚本?加载第二页的内容时,一切准备就绪。

    【讨论】:

    • 成像,我在 second.html 中有一个文本框,我为此添加了一个验证插件,当我使用加载方法时,这个插件不起作用。
    • 嗯,这取决于您的验证插件,但是您修改代码以在加载第二个内容之后运行验证设置。本质上,您正在创建一个加载“视图”的 SPA 架构 - 您的 JS 需要/应该存在于一个文件中。
    • 感谢大佬的回答,在我的真实项目中,第二页是数据输入页面,我使用ajax发布数据,请注意,我把所有的js代码,在app.js中,我怎么能在第一页运行此代码? (当我从第二页加载#container 时)
    • 如果您喜欢这个答案,请标记它;)所以我不确定我是否明白您的问题。如果 $("#form").validateSetup() 用于您的第二页,请在成功处理程序中运行它以加载第二页。即,加载后,做任何有意义的事情。
    • 我告诉验证只是一个例子,如果在第二页中,我只有一个按钮,并用 jquery 处理 CLICK 事件,当我加载第二页时,首先使用加载函数,此代码不起作用
    猜你喜欢
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    相关资源
    最近更新 更多