Vous pouvez créer un sélecteur personnalisé (probablement très inefficace si):
$.extend($.expr[':'], {
onclick: function(node, index, args, stack) {
var events = $(node).data('events');
var fn = args[3];
if (!events || !events.click) return false;
for (i in events.click) {
if (events.click[i].name == fn) return true;
}
return false;
}
});
$("input[type='button']:onclick('save')")
function.name
ne fonctionne pas dans IE, donc vous devrez sauter par un autre crochet en utilisant toString() et regexps. Dans l'ensemble, il vaut mieux conserver manuellement une liste de noms de gestionnaires d'événements.
Modifier: en regardant votre extrait de code, il semble y avoir aucune raison de chercher des gestionnaires d'événements. Au lieu de lancer des sélecteurs d'attribut de manière extravagante, utilisez des classes et des identifiants pour adresser vos éléments d'une manière sémantiquement significative, par ex.
<img id="scroll-icon" src="icons/scroll.gif" />
<input id="submit-button" type="submit" onclick="save();" />
puis
$("#scroll-icon".click(function(){
var targetOffset = $("submit-buttton").offset().top;
$("html,body").animate({scrollTop: targetOffset}, 400);
});
Vous essayez de trouver un bouton dont onclick est lié à une méthode commençant par sauver? – justkt
Oui, précisément – dragonfly