Подтвердить что ты не робот

JQuery О функции для будущих элементов?

$("#dataTable tbody").on("click", "tr", function(event){
    alert($(this).text());
});

этот синтаксис для tr, которые уже находятся на странице?

а если нет, то какой синтаксис для будущих элементов tr?

4b9b3361

Ответ 1

Для будущих элементов внутри #dataTable tbody ваш код должен работать. Чтобы делегировать клик полностью до документа, разрешить тем же обработчиком для будущего <tr> в любом месте страницы, попробуйте:

$(document).on("click", "tr", function(event){
    alert($(this).text());
});

Ответ 2

Добавляя к принятому ответу Davids, вы также можете использовать это решение для привязки нескольких событий к селектору, а также ко всем будущим соответствующим элементам.

Например, элемент ввода.

$(document).on({
    focus:function(){
        alert($(this).val());
    },
    blur: function(){
        alert($(this).val());
    }
}, 'input[type=text]');

Ответ 3

Это будет обрабатывать все <tr> s, независимо от того, когда они были созданы, но только в текущем существующем #dataTable tbody.
Это эквивалентно .delegate.

Ответ 4

Вы должны использовать jQuery . live() для будущих элементов

Неправильно, так как это jQuery 1.7 (и я должен был быстро опубликовать свой ответ).

.on() работает для всех (будущих) элементов.

Ответ 5

Из api.jquery.com/on/

Метод .on() присоединяет обработчики событий к выбранному в данный момент набору элементов в объекте jQuery. Начиная с jQuery 1.7, метод .on() предоставляет все функции, необходимые для присоединения обработчиков событий. Для помощь в преобразовании из более старых методов события jQuery, см..bind(),.delegate() и .live(). Чтобы удалить события, связанные с .on(), см..off(). Чтобы прикрепить событие, которое выполняется только один раз, а затем удаляет сам, см..one()

и api.jquery.com/live/

Как и в jQuery 1.7, метод .live() устарел. Используйте .on() для присоединить обработчики событий. Пользователи более старых версий jQuery должны использовать .delegate() в предпочтении .live().