Ich muss alle Elemente auswählen, die gebunden hat "Klick" Ereignis? Gibt es einen solchen Selektor?Jquery Selector, die nach Ereignissen suchen
Antwort
Es ist nicht nativ von jQuery unterstützt, aber Sie können Ihre eigenen Selektor hasEvent plugin schreiben:
jQuery.expr[":"].click = "jQuery(a).hasEvent('click');";
$("a:click").doStuff();
EDIT:
Es gibt auch die Event Bound Selector plugin, die vollständiger ist und arbeitet die aus Box, ist aber auch größer.
Nein. Sie können über alle Elemente iterieren und prüfen, ob sie eine Ereignisbindung haben. Aber das wäre nicht sehr effizient, es sei denn, Sie haben eine Ahnung, welche Art von Elementen das Ereignis binden würde, so dass Sie die Suche einschränken können.
ist es vielleicht nicht so schrecklich effizient ist, weil Ich vermute, Jquery macht eine Menge von Schleifen über alles für jede Abfrage – cobbal
Suche nach der Position:
button: function(elem){
return "button" === elem.type || elem.nodeName.toLowerCase() === "button";
},
input: function(elem){
return /input|select|textarea|button/i.test(elem.nodeName);
},
//init custom
ev: function(elem,i,match){
var what = $(elem).hasEvent(match[3]);
var type = (typeof what);
return what !== null && type !== undefined;
}
//End custom
},
setFilters: {
first: function(elem, i){
return i === 0;
},
last: function(elem, i, match, array){
return i === array.length - 1;
},
even: function(elem, i){
return i % 2 === 0;
},
.....
gleichen Einsatz wie has()
ex:
$('form:ev(submit)');
$('input:ev(click)');
$('a:ev(click)');
Großartig. Ich frage mich, wie es funktioniert. – Vasil