javascript - jQuery 绑定(bind)事件不会在通过 $().load() 加载的元素上触发

标签 javascript jquery html

我有一个位于 .html 文件中的 DIV,该文件通过以下方式加载到我的文档中:

$(document).Ready( function() {
    $("#contentDiv").load("some.html")


    //some.html contains a button id=saveButton
    $("#saveButton").click( function () {
        alert("Here I am!");
    }

});

该事件不会触发。如果我剪切 some.html 的内容并将其放入文档中,呃,“物理地”,该事件将会触发。

所以,我很确定这个问题与 html 是通过 .load() 注入(inject)的事实有关。

这很麻烦,因为如果你查看页面源代码,所有 HTML 实际上都在那里,包括按钮。

所以,问题是,有什么方法可以实现这一点吗?我使用 .load() 来降低页面复杂性并提高可读性,尽管有代码折叠,但我真的不想将所有这些 HTML 拉入文档中。

编辑:此代码只是即兴输入的。这不是实际代码的剪切,只是为了演示问题所在。但是,感谢您指出这一点。

编辑2:Grrrrrrr。 });

最佳答案

load() 是异步的,因此您需要回调中的作业:

$(document).ready(function() {
    $("#contentDiv").load("some.html", function(){
        //some.html contains a button id=saveButton
        $("#saveButton").click( function () {
            alert("Here I am!");
        });
    });
});

希望有帮助:)

关于javascript - jQuery 绑定(bind)事件不会在通过 $().load() 加载的元素上触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35019197/

相关文章:

javascript - 如何获取对象中包含的数组的长度?

javascript - 虚拟键盘事件

javascript - 如何在 *ngIf 渲染后调用 JavaScript 函数

javascript - 在 jQuery 中使用一个开关按钮切换功能的问题

javascript - VueJS : what does an html attribute prefixed with a colon signify?

html - 背景图像宽度和高度适合所有媒体 - 无法使其工作

javascript - Onchange bootstrap datepicker更改另一个bootstrap datepicker的值

javascript - Slick carousel centerMode 的问题 - 不断增长的中心元素

html - 将鼠标悬停在图像上时显示一个按钮

javascript - Firebase 和 Angular JS 中的随机 ID