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