Есть ли способ использовать one()
с делегацией событий? например on()
или live()
, чтобы он был применен к элементам DOM, которые не созданы во время привязки?Использование .one() для некоторых элементов, которые еще не созданы (например. .live())
ответ
Да. Из jQuery .one()
docs:
вторых две форм, введенных в JQuery 1.7, идентичны .on() за исключением того, что обработчик будет удален после того, как в первый раз событие происходит при делегированном элементе, соответствует ли селектор ничего или нет. Например:
$("#foo").one("click", function() {
alert("This will be displayed only once.");
});
$("body").one("click", "#foo", function() {
alert("This displays if #foo is the first thing clicked in the body.");
});
После того, как код выполняется, щелчок на элементе с идентификатором Foo будет отображаться предупреждение. Последующие клики ничего не сделают.
Это означает, что, когда вы используете форму $(el).one('click', '.selector', handler)
он будет работать как live
- обработчик событий связан с el
(который должен существовать в DOM), но обработчик события будет выполняться только по кликам на .selector
, независимо от того, существует ли этот элемент во время вашего вызова до .one()
.
Редактировать: Похоже, что документация jQuery по этому поводу неверна - по крайней мере, так, как я ее интерпретирую. В соответствии с приведенным выше alert
,
«Это отображается, если #foo - первое, что щелкнуло в теле».
Что заставляет меня думать, что если что-нибудь еще щелкают в теле первого, обработчик события будет удален и не будет стрелять снова. Это не так - обработчик событий будет существовать до тех пор, пока один щелчок не будет нажиматься до #foo
.
См. this fiddle для демонстрации.
Да есть:
// added in jQuery 1.7
// .one(events [, selector] [, data], handler(eventObject))
$("div").one("click", "span", function (e) {
$(this).hide();
});
Точно так же, как и .on
$("#to-bind-to").one('event-type', 'delegated-selector', eventFunction);
- 1. Как указать объекты, которые еще не созданы.
- 2. jQuery выбор элементов, которые еще не существуют
- 3. jQuery - привязка к элементам, которые еще не созданы
- 4. Crystal Reports с использованием наборов данных, которые еще не созданы
- 5. jquery validate on элементы, которые еще не созданы
- 6. Как избежать отправки сообщений актерам, которые еще не созданы?
- 7. Используя .one() с .live() JQuery
- 8. Selenium python Как подождать для элементов, которые будут созданы
- 9. Повторное использование индексов, которые уже созданы
- 10. Coldfusion 10 - Live One on One chat with Websockets
- 11. Использование JQuery для выбора элементов списка, которые * не * содержат ссылку
- 12. jquery one on() вместо bind() и live()
- 13. Активировать форму jQuery для элементов, которые еще не добавлены?
- 14. Использовать getElementById для элементов, которые еще не находятся в DOM?
- 15. JQuery - отключить входы, которые еще не добавлены
- 16. Создание прослушивателей событий для отдельных DIVS, которые еще не были созданы, и как запускать отдельную команду?
- 17. Live обработчики изменений в jQuery 1.4.1 все еще не всегда работают для отдельных элементов в IE
- 18. Использование tr() в заголовках кнопок, которые были созданы редактором UI
- 19. Javascript: удаление элементов, которые были созданы с помощью .createElement()
- 20. Удаление списков из списка, которые дублируются для некоторых элементов.
- 21. Как перенести пакет с ресурсами, которые еще не созданы на моем сервере fhir?
- 22. Rails structure.sql недействителен (таблицы ссылок внешних ключей еще не созданы)
- 23. jQuery - Использование .one() с зависанием
- 24. Использование делегата jQuery() для замены live()
- 25. Как мне получить атрибуты jQuery UI для моих элементов, которые будут созданы после загрузки страницы?
- 26. Получить полевую квоту Live SDK One Drive
- 27. Манипулирование Элементами, которые позже будут созданы
- 28. Fabric Js Drag One Изображение Еще
- 29. StartActivity не работает для некоторых элементов RecyclerView
- 30. drupal_write_records() не работает для тех полей, которые были созданы hook_update_n()
сверху() u можно использовать. – Thulasiram
Да, это точно так же, как on() при делегировании? – adeneo