Плагин проверки jQuery с живым «кликом» - PullRequest
4 голосов
/ 20 мая 2011

У меня есть сайт, где пользователь может изменять содержимое страницы, используя jquery load.В каждом содержании страницы у меня есть форма, которую я проверяю с помощью jquery validation plugin

    $("#form-create").validate({
        submitHandler: function(form) {
            var name = $("#name").val();
            save(name);
            return false;
        }
    });

. Я заметил, что все функции jquery click работают только до тех пор, пока я не изменю содержимое страницы, но я решил ее, заменив click с live "click".Хотя та же самая проблема возникает с вышеупомянутой проверкой.Почему использование click работает, пока я не изменил содержимое страницы и live "click" не решит проблему?ИЛИ как я могу использовать плагин проверки с live "click", который решит проблему, но не объяснит ее мне:)

Ответы [ 3 ]

4 голосов
/ 20 мая 2011

Причина, по которой живой щелчок решает вашу проблему, заключается в том, что элементы изначально не существовали в вашей DOM, поэтому использование «живого» означает, что это живой щелчок независимо от того, обновляется ли он по мере поступления новых элементов в DOM.События по умолчанию используют только первый DOM, который был загружен.

Если вы хотите проверить валидацию через событие live click, вам следует использовать что-то вроде этого:

$('.submitButton').live("click", function() {

    $("#form-create").validate({
        submitHandler: function(form) {
            var name = $("#name").val();
            save(name);
            return false;
        }
    });

});

Надеюсь, это поможет,это было немного сложно, так как вы не указали какой плагин проверки, который вы используете, однако, какой бы плагин он не работал, при условии, что вы хотите вызвать проверку для события нажатия кнопки отправки.

0 голосов
/ 20 мая 2011

К сожалению, в прямом эфире события загрузки нет, хотя это запрашивается в течение достаточно долгого времени.

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

$('#contentDiv').ajaxComplete(function() {
    $("#form-create").validate(validateOptions);
});
0 голосов
/ 20 мая 2011

когда вы связываете набор элементов, скажем, $("div.clickable"), с событием, этот набор разрешается с помощью DOM во время выполнения функции $ ().Все последующие элементы (появившиеся после этого момента) не будут связаны, поскольку они не принадлежат исходному набору

Live делает именно это: обновляет исходный набор при появлении нового элемента, затем новые элементы связываютсякак они появляются в DOM

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