Я думаю, что многие разработчики будут делать это либо из-за незнания, либо из-за недостатка знаний (что, конечно, распространено), а остальные разработчики сделают это, потому что просто удобнее использовать атрибуты HTML-JS, чем позднее связывание, еслиВы знаете, что определенные объекты и функции всегда загружаются на каждую страницу, и они просто «будут там».
Я думаю, что это особенно true, когда указанный HTML происходит из обратного вызова AJAX.Возьмите пример, когда запрос AJAX возвращается с ответом HTML, и этот HTML вставляется на страницу.Теперь наивный разработчик будет думать следующим образом:
- Я не знаю, какие элементы находятся внутри этого HTML ответа, поэтому я не знаю, какие поздние привязки мне нужно добавить.
- Возможно, мне нужно добавить их все на всякий случай!Или напишите какой-нибудь скрипт синтаксического анализа, который обнаруживает элементы и связывает их с теми, которые я нахожу?
- Но что, если мне нужно привязать что-то, что еще не существует?Время написать длинный встроенный JavaScript!
Все это можно устранить с помощью вездесущей привязки, которая применяется ко всем текущим и будущим элементам на странице.В jQuery эквивалент равен live()
.Вместо записи:
$('.foo').click(function(){...});
Вы можете написать:
$('.foo').live('click', function(){...});
Теперь все элементы с именем класса 'foo' будут выполнять функцию при нажатии, , включая элементы, которые нев настоящее время не существует .Очень полезно для динамических интерфейсов AJAX.
Вы, возможно, уже знаете это, но я просто указываю, что все, что могут сделать атрибуты JS, чистый JS может делать лучше, и я бы посоветовал эту лучшую практику.