Когда селектор jQuery не возвращает никаких элементов, никакие события не связываются. Таким образом, вы не причиняете вреда, не написав if
заявление.
Это означает, что внутренне jQuery привязывает обработчик событий ко всем соответствующим элементам. Когда их нет, никакой обработчик не будет привязан ни к какому элементу. Это означает: вам не нужно проверять существование элемента в вашем коде.
Ссылка на будущее
Всякий раз, когда вы делаете
if ( $('#element') ){
$('#element').click(function(event) { /* blah blah */ });
}
Вы должны скорее сохранить результаты селектора
var result = $('#element');
// check number of elements (zero equals false, anything else equals true)
if (result.length) {
result.click(function(event) {
// blah blah
});
}
result.length
равно то же , что и result.size()
.
Привязка обработчиков событий к несуществующим элементам
Если ваш интерфейс будет генерировать новые элементы, и вы хотите, чтобы у них были добавлены обработчики событий при их добавлении в DOM, вам следует использовать функцию delegate()
. Также есть функция live()
, но используйте первую, когда это возможно, потому что это лучшая альтернатива. Есть множество ресурсов в сети, почему это так. Например, этот ответ Stackoverflow .
Примечание : Начиная с jQuery 1.7, метод .delegate () был заменен методом .on () . Однако для более ранних версий это остается наиболее эффективным способом использования делегирования событий.
См. Документация jQuery .