Puede crear un selector personalizado (probablemente muy ineficiente sin embargo):
$.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
no funciona en IE, sin embargo, por lo que tendrá que pasar por el otro gancho utilizando toString() y las expresiones regulares. En general, es mucho mejor mantener manualmente una lista de nombres de controladores de eventos.
Editar: mirando su fragmento de código, no parece haber ninguna razón para buscar controladores de eventos. En lugar de lanzar violentamente selectores de atributos, use clases e ID para abordar sus elementos de una manera semánticamente significativa, p.
<img id="scroll-icon" src="icons/scroll.gif" />
<input id="submit-button" type="submit" onclick="save();" />
y luego
$("#scroll-icon".click(function(){
var targetOffset = $("submit-buttton").offset().top;
$("html,body").animate({scrollTop: targetOffset}, 400);
});
Así que están tratando de encontrar un botón cuya onclick se une a un método a partir de ahorrar? – justkt
yeap, precisamente – dragonfly