この質問のタイトルは、.hover()
が同じ要素に複数回バインドされないようにする最終的な目標を反映しています。私はSOで検索を行なったし、私はすでに答えているこの質問を発見した尋ねる前に.hover()が同じ要素に複数回バインドされないようにする
:Checking if jQuery .hover action is already binded
はまた、私はそれについて多くをGoogleで検索しましたし、その質問への受け入れ答えが正しいように見えます。それと
、私は次の操作を実行しようとすると、コードの小片を思い付いた:クラスclass-name
- ループ、その要素
- 上のすべてのイベントを取得します
.hover()
イベントがすでにバインドされていることを確認してください。 - そうでない場合は、追加してください。
$(document).ready(function() {
$('.class-name').each(function() {
var events = $._data($(this)[0], 'events');
if (!(events['mouseover'] && events['mouseout'])) {
$(this).hover(
function() { alert('IN'); },
function() { alert('OUT'); }
);
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<a class="class-name">a</a>
上記のコードは動作しないと、エラーがどこにあるか私は理解することはできません。 JSコンソールの出力によれば、変数events
はundefined
です。
助けてください。ありがとう。
私はそれが簡単にクラスの存在を確認するために見つけます - オリジナルのホバーを追加するときは、「ホバーセット」クラスなどが存在するかどうかを確認します。存在しない場合は、リスナーを追加してクラスを追加します。どのクラスにホバーセットがあるのかを簡単に確認できるので、デバッグ中にも役立ちます。 – pbuck