Вопрос по jquery, javascript – не уверен насчет метода .on ()
Я использовал$.click()
метод для запуска некоторых событий. Но затем мне нужно было установить некоторые события для некоторых элементов HTML, прежде чем элементы были объявлены. Давайте возьмем это в качестве примера:
<script>
$('div.hide').click(function() {
$('div.hide').css({'display' : 'none'});
});
</script>
<div class="hide">some text</div>
Недостатком является то, что при настройке.click()
метод,div.hide
элементы не существуют, поэтому триггер не установлен.
Поэтому я обратился к.on()
метод, вот так:
<script>
$('div.hide').on('click', function() {
$('div.hide').css({'display' : 'none'});
});
</script>
<div class="hide">some text</div>
Но это также не работает. Я думал звоню.on()
сделает все существующее и будущееdiv.hide
элементы вызывают'click' function()
.
Мне удалось преодолеть это неудобство, но, насколько я знаю, мне бы хотелось узнать, что я делаю неправильно. Нет ли способа назначить триггер для будущих элементов HTML?
Моим решением было:
<script>
$(document).ready( function() {
$('div.hide').click(function() {
$('div.hide').css({'display' : 'none'});
});
});
</script>
<div class="hide">some text</div>
$(document).ready( function() { });
Оболочка, которая добавляет обработчик события для события готовности документа, так что код внутри не будет выполняться, пока не сработает это событие. Это обеспечивает полную визуализацию страницы перед запуском скрипта, в отличие от случая, когда JavaScript анализирует и запускает во время рендеринга страницы в противном случае.
Mark Schultheiss
метод jQuery.live прикрепить обработчик событий для всех элементов, которые соответствуют текущему селектору, сейчас и в будущем
$('body').on('click', 'div.hide', function() { ... });
Это ставит обработчик на<body>
но он ловит всплывающие события и вызывает обработчик, когда целевой элемент соответствует селектору (второй аргумент).
Обработчик не должен идти на<body>
; это может быть любой родительский элемент контейнера вашего<div>
.
& Quot; на & quot; метод заменяет старый «живой» и & quot; делегировать & quot; методы, а также "связать" сам.
<td>
это намного дороже с ".live ()" чем с ".on ()".