2013-07-23 3 views
3

У меня есть собственная сетка, которая отображает набор данных и подписывается на несколько событий (например, событие щелчка строки, событие щелчка столбца). Каждый раз, когда функция построения сетки называется первой строкой кода, это $ grid.empty(), которая должна не только физически очищать сетку от своих элементов DOM, но и отменить эти события. Мой график ниже показывает медленный, но устойчивый уклон слушателей событий. Подъем - это данные, загружаемые в сетку, и события, которые подключаются. В среднем за каждого запроса растет 10-11 прослушивателей событий. Не ужасно, но в течение часа он делает приложение непригодным. Я что-то упускаю или смотрю вниз по неправильному пути? Любая помощь приветствуется.jQuery и прослушиватели событий клиринга

Event Listener Graph in Google Chrome Dev Tools

Дополнительная информация: Я обнаружил, что мой вызов функции JQuery не очищает переменную в конце. Пример:

$.fn.myCustomFunction = function(parm) { var grid = this; {some more code, AJAX call }; 

Мне нужна сетка = нуль в конце. Однако из-за его контекста он полностью очищает мою сетку.

+1

Я не знаю, почему это происходит, но вы можете посмотреть в использовании [ 'на()'] (http://api.jquery.com/on/) с делегацией, поэтому слушатели должны быть связаны только один раз. –

+0

Являются ли ваши события многоуровневыми? Возможно, вам необходимо остановить распространение прослушивателя событий. – DevlshOne

+0

Очевидно, что вы должны использовать делегирование здесь –

ответ

1

Использование делегации:

$grid.on('click','tr',function(){ 
    //code stuff here 
}); 
Смежные вопросы