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

时间:2011-04-21 17:41:22

标签: 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);
        }
    );

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

6 个答案:

答案 0 :(得分:6)

您正在寻找.live() function

这会在添加项目时自动监控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);
    }
);

答案 1 :(得分:4)

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

无论如何,只是为了保持最新状态。我最终通过包括选择器在我的工作中开始工作,例如:

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

答案 2 :(得分:1)

请改用live功能。

答案 3 :(得分:1)

使用$ .live()代替,它适用于这种情况。

$("a[id^='anb']").live('click', function() { ... });
$("a[id^='art']").live('hover', function() { ... });

答案 4 :(得分:1)

Live是你的朋友

答案 5 :(得分:1)

我相信你正在寻找jQuery.live()