Обнаружение события из HTML-элемента с помощью jquery

0

У меня есть код устаревшего кода, который имеет что-то вроде

<a href='#' onclick="javascript:Domystuff(); return false;"> Some text<a>

Я добавляю jQuery для какой-либо другой цели на веб-сайте, и теперь я хочу определить, есть ли у данного тега событие "onclick" или нет. Но я не нашел, как я могу это сделать. Я вижу, что большинство предлагает использовать $("a").data('events') но это не сработало для меня и всегда дает неопределенный результат. однако, когда я вызываю $("a").click() выполняет Domystuff().

Любая идея, как я могу определить, присутствуют ли onclick или onchange или onblur такие как события атрибута HTML.

EDIT: Я забыл упомянуть, что я не просто хочу обнаруживать все события из атрибутов, но хочу, чтобы все события на элементе зависали или размывались или менялись. Надеюсь, теперь я уточню. благодаря

  • 0
    Похожий вопрос: stackoverflow.com/questions/446892/…
  • 0
    Я вижу, что @simone не совсем связан, так как я хочу проверить, все ли события выполняются через код, а не в среде отладки.
Теги:

2 ответа

2
if($('a').attr('onclick')) { // exists
}

в конце концов, даже обработчики событий являются HTML-атрибутами. Тем не менее, это не обнаружит обработчиков событий, прикрепленных jQuery, поэтому:

 var ahrefs = $('a');
 for(var i = 0;i < ahrefs.length;i++) {
    var node = ahrefs.get(i);

    if(typeof node.onClick == function) { // has an attached event handler
    }
 }

Легко, не так ли?

  • 0
    +1, забавно, что я уже об этом думаю, но это не совсем решает мою проблему. но да, это один из вариантов. на самом деле это моя вина, я не упомянул, что хочу обнаруживать все события, независимо от того, как они связаны с элементом, а не только с атрибутом. По крайней мере, те, кто добавляются из jquery и приписывают оба.
1

попробуй что-нибудь вроде этого

 if ($('a').attr("onClick") != undefined) {}
  • 1
    Вы также можете попытаться быть более конкретным в своем селекторе. $("a") довольно жадный, но если вы добавите класс $("a.myClass") он попадет только в этот элемент.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню