Вы можете создать собственный селектор (хотя, вероятно, очень неэффективно):
$.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
не работает в IE, поэтому вам придется перепрыгивать через другой хук, используя toString () и регулярные выражения,В общем, вам гораздо лучше вручную составлять список имен обработчиков событий.
Редактировать: глядя на ваш фрагмент кода, похоже, что вообще нет причин искать событиеобработчики.Вместо дикого разбрасывания селекторов атрибутов используйте классы и идентификаторы для семантически значимого обращения к вашим элементам, например,
<img id="scroll-icon" src="icons/scroll.gif" />
<input id="submit-button" type="submit" onclick="save();" />
, а затем
$("#scroll-icon".click(function(){
var targetOffset = $("submit-buttton").offset().top;
$("html,body").animate({scrollTop: targetOffset}, 400);
});