JQuery по функции и документ готов

Я использую функцию jQuery on (), чтобы прикрепить onclick функционировать с набором якорей на моем сайте следующим образом:

<ul>
  <li>First <a href='#' title='delete' class="itemDelete">x</a></li>
  <li>Second <a href='http://www.repubblica.it' title='delete' class="itemDelete">x</a></li>
  <li>Third <a href='#' title='delete' class="itemDelete">x</a></li>
</ul>​

<script type="text/javascript">
$(document).on('click', '.itemDelete', function(e) {
    $(this).closest('li').remove();
    e.preventDefault();
});
</script>

Должен ли я вставить код JavaScript в следующем блоке?

$(document).ready(function() {
  ...
});

Если да, то почему?

2 ответа

Решение

Этот фрагмент кода не требует полного анализа содержимого документа в любом случае, потому что вы используете document который всегда существует. Селектор, переданный в качестве второго аргумента, никоим образом не используется для извлечения элементов, поэтому DOM не должен быть готов к этому.

Вы не сможете позвонить $(document).ready во-первых, если выше не так.

Важно понимать, что за кулисами вы подключаете прямого обычного слушателя событий к document, Практически все, что делает селектор, - это то, что ваш обратный вызов обработчика не вызывается, если никакие элементы не соответствуют вашему селектору в пути распространения события. И, очевидно, если распространение будет преждевременно остановлено слушателями более низкого уровня, в этом случае оно также не будет запущено.

В этом случае вам не нужно. Так как <script> После тега HTML для элементов ваш код будет выполнен после загрузки элементов, что устраняет необходимость использовать обработчик событий DOM ready, чтобы гарантировать, что они были загружены.

Тем не менее, я обычно предпочитаю включать весь мой код JavaScript, который работает с элементами на странице, в обработчик событий, готовый к DOM, даже когда это не является строго обязательным; таким образом, если я решу переместить его в другое место - например, в верхнюю часть страницы или во внешний файл - или изменить его каким-либо другим способом, он не сломается.

Другие вопросы по тегам