21

重複の可能性:
イベントハンドラーがjQueryの要素にバインドされているかどうかをテストします

次のことを試みました(リンクは「a」タグのjQueryオブジェクトです):

 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を使用する

では、要素にクリックハンドラがあるかどうかを確認するにはどうすればよいですか?

4

1 に答える 1

37

イベントの確認に使用できjQuery._dataます。最初の引数は、jQueryオブジェクトではなく、HTML要素への参照である必要があります。

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>

また、イベントをチェックするこのメソッドは、イベントがjQueryを介してバインドされている場合にのみ機能することに注意してください。イベントが、、、またはその他のjQuery以外の方法でバインドされている場合、これは機能しませelement.attachEventListenerん。このボートにフィットしている場合は、この回答を確認してください。element.onclick<a onclick="doStuff()">

于 2012-12-28T15:57:09.037 に答える