将事件重新附加到新加载的div

Shy*_*yam 5 jquery events

显然,当元素被替换时,我的JQuery事件就会消失.目前他们是这样的:

$("a[id^='anb']").click(
        function () {
            /* ommited for readability */;
            var furl = "target_view";
            $('#my_article_container').load(furl, function() {
                       animateThem(); });
            return false;
        }

    );

    $("div[id^='art']").hover(
        function() {
            $(this).fadeTo("slow", 0.33);
        }
    );
Run Code Online (Sandbox Code Playgroud)

JQuery中是否有机制或者如何重新绑定这些事件?

Ric*_*kir 6

你正在寻找这个.live() 功能.

这将在添加项目时自动监视dom并重新附加事件.

$("a[id^='anb']").live('click',
    function () {
        /* ommited for readability */;
        var furl = "target_view";
        $('#my_article_container').load(furl, function() {
                   animateThem(); });
        return false;
    }

);

$("div[id^='art']").live('hover',
    function() {
        $(this).fadeTo("slow", 0.33);
    }
);
Run Code Online (Sandbox Code Playgroud)


Dai*_*Bok 5

这是我在Google上搜索时遇到的第一个答案-我也遇到了同样的问题。Live在1.7版中已弃用,在1.9版中已删除。新版本的JQuery建议使用on。jQuery.on()

无论如何,只是为了保持最新状态。最后,我通过将选择器包含在on函数中来工作,例如:

$(document).on("click","a[id^='anb']",function(){....})
Run Code Online (Sandbox Code Playgroud)