Я думаю, вы могли бы сделать что-то вроде этого: вы сохраняете события div, клонируя div и сохраняя данные ('events') в объекте.После слов вы перебираете объект и привязываете события назад.Вы должны клонировать, потому что при откреплении событий исходные данные («события») удаляются. (Надеюсь, я понял, что вы ищете)
<div id='my'>my</div>
var my = $('#my');
my.click(function(){
alert('my');
});
my.hover(function(){
$(this).css('color', 'red');
});
my.click(function(){
alert('you');
});
var ev =my.clone(true).data('events');
my.unbind();
for (var e in ev){
//you have to iterate on the property since is an array with all the handlers for the same event)
for (i= 0; i < ev[e].length; i++){
my.bind(e, ev[e][i]);
}
}
fidlle http://jsfiddle.net/pXAXW/
РЕДАКТИРОВАТЬ - Чтобы сделать это в 1.5.2, вам просто нужно изменить способ, которым вы прикрепляете события назад, потому что они сохраняются по-другому:
$(document).ready(function(){
var theDiv = $("#thediv");
theDiv.click(function(){
$(this).css("border-color", "blue");
alert("Click!");
});
theDiv.click(function(){
$(this).css("border-color", "blue");
alert("clack!");
});
var theEvents = theDiv.clone(true).data("events");
// Unbind events from the target div
theDiv.unbind("click");
// Put the saved events back on the target div
for (var e in theEvents){
// must iterate through since it's an array full of event handlers
for ( i=0; i<theEvents[e].length; i++ ){
theDiv.bind(e, theEvents[e][i].handler);
}
}
});
здесь: (так же, как Katiek) http://jsfiddle.net/nicolapeluchetti/CruMx/2/ (событие запускается дважды, если вы не нажмете точно на div!) Я также обновил свою скрипку, чтобы использовать jquery 1.5.2 http://jsfiddle.net/pXAXW/1/)