Я пытаюсь использовать метод делегата для сетки, которую я переношу с DataTables. Сетевой плагин. У меня первоначально был этот код, который работает как ожидалось.
$("#myGrid tbody tr").click(function() {
var id = $(this).children('td').eq(0).text();
alert(id);
});
Однако, если я изменяю размер подкачки страниц затем, более новые строки не имеют события щелчка, вызывающего функцию. Я решил, что новый метод делегата JQuery должен сделать точно, что я хотел; однако, это не делает ничего вообще ни на каком элементе TR.
Мог любой объяснять, почему это не работает:
$('#myGrid tbody').delegate('tr', 'click', function() {
var id = $(this).children('td').eq(0).text();
alert(id);
});
Я попробовал различные комбинации селектора, и ни один не заставляет его работать.
Спасибо Paul Speranza
Используйте это:
$("#myGrid tbody tr").live('click', function() {
var id = $(this).children('td').eq(0).text();
alert(id);
});
.live ()
работает для текущих будущих элементов.
Попробуйте вместо этого:
$('#myGrid').delegate('tr', 'click', function() {
var id = $(this).children('td').eq(0).text();
alert(id);
});
Есть большая вероятность, что некоторые события в вашем теле испорчены и / или вашим телом манипулируют. Я сомневаюсь, что от этой проблемы страдает и вся таблица.
Если новые строки добавляются динамически, вы должны использовать метод live
для элементов, измените делегат
до live
Попробуйте это
$('#myGrid tbody').delegate('click', 'tr', function() {
var id = $(this).children('td').eq(0).text();
alert(id);
});
или
$('body').delegate('click', '#myGrid tbody tr', function() {
var id = $(this).children('td').eq(0).text();
alert(id);
});