$("#dataTable tbody").on("click", "tr", function(event){
alert($(this).text());
});
этот синтаксис для tr, которые уже находятся на странице?
а если нет, то какой синтаксис для будущих элементов tr?
$("#dataTable tbody").on("click", "tr", function(event){
alert($(this).text());
});
этот синтаксис для tr, которые уже находятся на странице?
а если нет, то какой синтаксис для будущих элементов tr?
Для будущих элементов внутри #dataTable tbody
ваш код должен работать. Чтобы делегировать клик полностью до документа, разрешить тем же обработчиком для будущего <tr>
в любом месте страницы, попробуйте:
$(document).on("click", "tr", function(event){
alert($(this).text());
});
Добавляя к принятому ответу Davids, вы также можете использовать это решение для привязки нескольких событий к селектору, а также ко всем будущим соответствующим элементам.
Например, элемент ввода.
$(document).on({
focus:function(){
alert($(this).val());
},
blur: function(){
alert($(this).val());
}
}, 'input[type=text]');
Это будет обрабатывать все <tr>
s, независимо от того, когда они были созданы, но только в текущем существующем #dataTable tbody
.
Это эквивалентно .delegate
.
Вы должны использовать jQuery . live() для будущих элементов
Неправильно, так как это jQuery 1.7 (и я должен был быстро опубликовать свой ответ).
.on()
работает для всех (будущих) элементов.
Метод .on() присоединяет обработчики событий к выбранному в данный момент набору элементов в объекте jQuery. Начиная с jQuery 1.7, метод .on() предоставляет все функции, необходимые для присоединения обработчиков событий. Для помощь в преобразовании из более старых методов события jQuery, см..bind(),.delegate() и .live(). Чтобы удалить события, связанные с .on(), см..off(). Чтобы прикрепить событие, которое выполняется только один раз, а затем удаляет сам, см..one()
Как и в jQuery 1.7, метод .live() устарел. Используйте .on() для присоединить обработчики событий. Пользователи более старых версий jQuery должны использовать .delegate() в предпочтении .live().