javascript - 通过 AJAX 加载页面时 jQuery 不工作

标签 javascript jquery html ajax

我有一个索引页面,其中加载了 jQuery 以及 slider 插件的 js 文件。然后我使用点击事件来使用 .load 加载外部页面,如下所示:

//jQuery loaded from Google CDN here (in head)

jQuery( document ).ready(function() {
    jQuery( ".button" ).click(function() {
        var myUrl = "/url-to-page";
        jQuery( "#target-div" ).load(myUrl);
    });
});

这成功地将外部页面加载到#target-div中,但是索引页面上加载的 jQuery 不会在从外部页面加载的元素上触发。例如,我在外部页面上有一些图像(用于 slider 插件),但 slider 插件不会将它们变成幻灯片,就像我将这些相同的图像(在包装器 div 内)直接放到索引页上一样.

外部页面没有任何 html、head 或 body 标签 - 只有我想要加载的内容包含在一些 div 中。

有人知道让 jQuery 在外部加载的页面上工作的“技巧”吗?

最佳答案

问题是您的点击事件已被绑定(bind)。您需要将点击事件绑定(bind)到页面上新创建的元素加载后。 Jquery 的 load 方法将一个函数作为第二个参数。一旦加载完成,它就会被触发。

jQuery( document ).ready(function() {
    jQuery( ".button" ).click(function() {
        var myUrl = "/url-to-page";
        jQuery( "#target-div" ).load(myUrl, function () {
          // bind events here
        });
    });
});

编辑:使用事件委托(delegate)

$(function () {    //shorthand for document ready
    $('#target-div').on('click', '.button', function () {
        $("#target-div").load("/url-to-page");
    });
});

#target-div 中的每个 .button 都会绑定(bind) click 事件。单击事件还将绑定(bind)到添加到 #target-div 的每个 .button 元素。希望这有帮助。

关于javascript - 通过 AJAX 加载页面时 jQuery 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25268861/

相关文章:

javascript - 如何将带有哈希文件名的已编译 CSS/JS 包含到网页中

Javascript:如何验证格式为 MM-DD-YYYY 的日期?

javascript - 获取所选下拉选项的数据属性

html - 使用 Bootstrap 网格系统堆叠

javascript - javascript重置中的选项卡

javascript - .parent().parent().parent() 与 .最接近的 ("li")

javascript - $.Variable in jquery,定义方式有些困惑

jquery - 如何将div排列为停靠面板?

html - 如何让自定义对话框中的文字垂直居中

android - 将 webview 内容保存到 android 存储并加载它