javascript - jQuery 在 AJAX 插入的 DOM 元素上失败

标签 javascript jquery

我在名为 close 的类上编写了一个简单的 jQuery 函数。

$(function () {
    $(".close").click(function () {
        $(this).parent().fadeTo(400, 0, function () { // Links with the class "close" will close parent
            $(this).slideUp(400);
        });
        return false;
    });
});

它运行良好,但如果我使用 AJAX 插入新的 DOM 元素,此功能会失败?为什么会这样呢?虽然我知道解决方案是在通过 AJAX 响应插入的页面上编写相同的函数。我做到了并且有效。为什么它不能在全局范围内运行?

我尝试将 $(".close").click(function () { 替换为 $(".close").on("click", function(event ){ 但它没有给我问题的确切解决方案。

最佳答案

这是因为要让单击事件起作用,元素应该出现在文档中...使用 on 委托(delegate)事件

$(document).on("click",".close",function () {
    $(this).parent().fadeTo(400, 0, function () { // Links with the class "close" will close parent
        $(this).slideUp(400);
    });
    return false;
});

在ajax成功功能之后添加点击事件,但我更喜欢使用on委托(delegate)事件(因为jquery中的on是为此目的引入的)。

我建议您使用最接近的静态父级,而不是 document 本身,以获得更好的性能...

link阅读有关事件委派的更多信息

关于javascript - jQuery 在 AJAX 插入的 DOM 元素上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16030976/

相关文章:

javascript - 为什么 forEach 数组方法不是循环 document.getElementsByClassName 的函数

javascript - 在 cshtml 中的迭代表上设置 ng-bind-html

javascript - NodeJS URL 路由和渲染 HTML

javascript - jQuery:忽略选择器的元素索引

jquery - 使用 JQuery 显示图像

javascript - 需要从 PHP 代码创建 Ajax

javascript - 从 DOM 中删除动态对象后,从数组中删除动态对象

jquery - 如何检查 jQuery 日期选择器是否为空?

jquery - 你能为我解释一下这段 jQuery 代码吗

javascript - 单击时的 CSS 过渡