.closest ('form'). find (': checkbox') объясняет логику - PullRequest
1 голос
/ 10 ноября 2011

У меня есть две формы, форма 1 и форма 2; Обе формы расположены в одном документе или на странице. Эти формы различаются по флажку; Форма 1 имеет элемент ввода флажка, а форма 2 не имеет элемента флажка внутри.

В настоящее время я пытаюсь проверить наличие элемента ввода флажка с помощью следующего кода:

if(jQuery(this).closest("form").find(':checkbox')){...}

когда я нажимаю кнопку отправки формы 2, флажок найден.

На данный момент я понимаю, что .closest устанавливает контекст для ближайшего найденного элемента формы. И если я запускаю форму 2, у которой нет флажка, почему он находит флажок формы 1?

Очевидно, я неправильно понял, как это работает. Может ли кто-нибудь объяснить?

1 Ответ

1 голос
/ 10 ноября 2011
if(jQuery(this).closest("form").find(':checkbox')){...}

Я думаю, что причина вашей проблемы в том, что все выборы jQuery верны.Даже пустой выбор jQuery пройдет условие if:

if (jQuery(false)) {
    alert('this test passes');
}

Вы должны проверить свойство length, чтобы увидеть, найдены ли какие-либо элементы:

if(jQuery(this).closest("form").find(':checkbox').length){...}

Если элементы не найдены, length будет 0, что является ложным значением y, поэтому условие не выполнится.Если будут найдены какие-либо элементы, length будет больше, чем 0, поэтому условие пройдет.

...