Обработчики событий Jquery для аккордеонов - PullRequest
1 голос
/ 13 февраля 2012

Я использую аккордеон jQuery и хотел бы сохранить существующее событие щелчка для каждого элемента аккордеона, удалить все события и добавить их обратно при необходимости. Я знаком с подключением / отключением обработчиков с использованием .on и .off, но как мне сохранить обработчик по умолчанию для каждого из элементов аккордеона, не переопределяя его?

Ответы [ 2 ]

1 голос
/ 13 февраля 2012

jQuery сохраняет события и их обработчики в data('events) `с каждым элементом.Вы можете попробовать что-то вроде этого.

var oldHandlers = $('#datepicker').data('events');

$('elementSelector').unbind();//will unbind all the handlers

oldHandlers будет объектом в этом формате.

{
   click: [ { 
              handler: function(){.. }
              ..
            }, 
            { 
              handler: function(){.. }
              ..
            }
            ..
           ]
   focus: [ { 
              handler: function(){.. }
              ..
            }, 
            { 
              handler: function(){.. }
              ..
            }
            ..
           ]
}

Если вы хотите получить обработчик click от oldHandlers, вы можетескажем.

if(oldHandlers && oldHandlers.click && oldHandlers.click.length > 0){
    $('elementSelector').click(oldHandlers.click[0].handler);
}
0 голосов
/ 13 февраля 2012
$('#foo').bind('click', function() {
  alert('The quick brown fox jumps over the lazy dog.');
});

// will remove click event
$('#foo').unbind('click');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...