手风琴的Jquery事件处理程序

时间:2012-02-13 19:18:13

标签: jquery jquery-ui events

我正在使用jQuery手风琴,并希望保存每个手风琴项目的现有点击事件,删除所有事件,并在需要时将其重新添加。我熟悉使用.on和.off附加/分离处理程序,但是如何在不覆盖它的情况下为每个手风琴项目保留默认处理程序?

2 个答案:

答案 0 :(得分:1)

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(){.. }
              ..
            }
            ..
           ]
}

如果你想从oldHandlers获得click处理程序,你可以说。

if(oldHandlers && oldHandlers.click && oldHandlers.click.length > 0){
    $('elementSelector').click(oldHandlers.click[0].handler);
}

答案 1 :(得分:0)

$('#foo').bind('click', function() {
  alert('The quick brown fox jumps over the lazy dog.');
});

// will remove click event
$('#foo').unbind('click');