Seit jQuery 1.4.2+ ändert, wie Ereignis-Handler gespeichert werden, scheint dies relevant:
Der beste Weg, den ich gefunden habe, ist die Verwendung von Event-Namespacing:
var ary_handlers = [ fn_highlight, fn_onpress, fn_cleanup ];
for ( idx = 0; idx < ary_handlers.length; idx++ ){
$('#test').bind('click.foobar',ary_handlers[idx]);
}
// and then later:
$('#test').unbind('.foobar');
In dem obigen Beispiel sind alle foobar-Ereignisse ungebunden. Beachten Sie, dass Sie, wenn Sie eine feinere Steuerung benötigen, jeden Click-Handler mit einem Namensraum versehen und mit Ihrem Array von Handlern korrelieren können:
var ary_handlers = [ fn_highlight, fn_onpress, fn_cleanup ];
for ( idx = 0; idx < ary_handlers.length; idx++ ){
$('#test').bind('click.ns_' + String(idx), ary_handlers[idx]);
}
// and then later you could pick off a specific one to unbind
$('#test').unbind('.ns_2');
0 Stimmen
Haben die Ereignisse dieselbe Handler-Funktion oder sind sie alle unterschiedlich?
0 Stimmen
Sollte das nicht der Fall sein. Lassen Sie uns so tun, als ob sie alle unterschiedlich sind und ich nicht weiß, was sie sind