Как проверить, имеет ли элемент обработчик кликов?

Возможный дубликат:
проверить, привязан ли обработчик событий к элементу в jQuery

Пытался сделать следующее (ссылка - это объект jQuery тега 'a'):

 link.data("events") //undefined even if link has event handlers
 jQuery.data(link, 'events') //undefined always also
 jQuery._data(link, 'events') //undefined always also

с помощью jquery-1.8.3

Итак, как проверить, имеет ли элемент обработчик кликов?

Ответ 1

Вы можете использовать jQuery._data для проверки событий. Первый аргумент должен быть ссылкой на элемент HTML, а не на объект jQuery.

var ev = $._data(element, 'events');
if(ev && ev.click) alert('click bound');

Пример ниже.

$(function(){
    $('#test').click(function(){
        // NOTE: this below is refering to the HTML element, NOT the jQuery element
        var ev = $._data(this, 'events');
        if(ev && ev.click) alert('click bound to this button');
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<button id="test">Click me to check for click handlers</button>