Jquery .on против .live

Я знаю, что .live() теперь устарела, но я не могу изменить ее и сохранить функциональность.

У меня небольшой вопрос о функции .on() в jQuery. Сейчас я использую .live() здесь

Вот так:

$('table tr th').live("click", function() {
});

Но, когда я пытаюсь заменить .live() на .on(), она больше не работает так, как должна.

Я пробовал ставить

$('table tr th').on("click", function() {
});

а также

$('table tr').live("click", "th", function() {
});

и

$('table tr').delegate("th", "click", function() {
});

но безрезультатно.

Почему так происходит и какие шаги я могу предпринять, чтобы заставить его работать правильно?

24
задан Ravi Ram 18 March 2014 в 22:45
поделиться

2 ответа

Попробуйте:

$('table tr th').live("click", function() {

должно быть

$(document).on("click", "table tr th", function() {

Именно так вы бы точно подражали вызову .live. Конечно, вы можете ограничить ваш селектор из документа чем-то более значимым, основываясь на вашей структуре DOM.

Редактировать:

Просто для пояснения, в вашем примере вы должны использовать $(document).on(..., потому что таблица не имеет родителей и заменяется в течение жизни вашей страницы.

10
ответ дан 28 November 2019 в 23:30
поделиться

Я почему-то предполагаю, что вы добавляете tr элементов в свою таблицу, а не th.

$('table').on("click", "tr th", function(){});
0
ответ дан 28 November 2019 в 23:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: