JQuery не может вызвать изменения после обновления DOM - PullRequest
0 голосов
/ 05 октября 2009

Я создал несколько зависимых выпадающих в цепочке. Тот, что вверху, должен запускать несколько запросов Ajax для каждого раскрывающегося списка ниже.

Я использую jQuery 1.3.2 с livequery , поэтому обработчики событий должны быть связанными для всех перезагруженных элементов DOM, но для новых обновленных элементов не происходит инициирование изменений. 1007 *

Что я здесь не так делаю?

function dropDown_CHILD()
{
    jQuery.ajax({
        'async': false,
        'url':...,
        'data':...,
        'cache':false,
        'success':function(html){
            $('#CHILD_unavailable').empty();
            $('#CHILD').replaceWith(html);
        },
        'complete': function(request, status){
            $('#CHILD').trigger('change');
        },
        'error':function(a,b,c){alert('An error occurred, please try again.');}
    });

}
$('#PARENT').livequery('change', dropDown_CHILD);

И то же самое генерируется и для CHILD-OF-CHILD, так что это должно вызывать и его обработчик в функции complete, не так ли?

Обновление: Теперь вы можете видеть это на лету.

Заранее большое спасибо.

Ответы [ 2 ]

2 голосов
/ 05 октября 2009

Возможно, «replaceWith» удаляет элемент перед вставкой замены, поэтому ваше событие становится свободным:

Когда элемент больше не соответствует Селектор событий, привязанных к Live Query к нему не привязаны. Живая Query может истек срок действия которого больше не будет связываться больше событий и уберите все события это ранее связывало. (livequery doc)

0 голосов
/ 06 октября 2009

Я наконец решил этот случай, заменив плагин на Ajax Listen Plugin , который помещает слушателя прямо в объект DOM документа.

Теперь известно обо всех экземплярах независимо от того, как обновляется DOM.

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