Повторно прикрепить событие к недавно загруженному div - PullRequest
5 голосов
/ 21 апреля 2011

Очевидно, мои события 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 ]

6 голосов
/ 21 апреля 2011

Вы ищете функцию .live() .

Это автоматически отслеживает события dom и reattach при добавлении элементов.

$("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);
    }
);
5 голосов
/ 16 сентября 2014

Это был первый ответ, который я нашел, когда гуглил - у меня возникла та же проблема. Live был объявлен устаревшим в версии 1.7 и удален в версии 1.9. Новые версии JQuery рекомендуют использовать на. jQuery.on ()

Во всяком случае, просто чтобы держать это в курсе. В конце концов я заставил мою работать по , включая селектор в функции включения, например:

$(document).on("click","a[id^='anb']",function(){....})
1 голос
/ 21 апреля 2011

Я полагаю, вы ищете jQuery.live ()

1 голос
/ 21 апреля 2011

Live твой друг

1 голос
/ 21 апреля 2011

Вместо этого используйте $ .live (), который предназначен для работы именно в этом случае.

$("a[id^='anb']").live('click', function() { ... });
$("a[id^='art']").live('hover', function() { ... });
1 голос
/ 21 апреля 2011

Вместо этого используйте функцию live.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...