var hovOn = function(event) {
if($(this).find('a').length < 1){
$(this).html(playButtonTemplate);
}else{
$(this).find('a').show();
}
};
var hovOff = function(event) {
$(this).find('a').hide();
}
、それを考え出しました。これは、テンプレートから要素を作成し、方法
mouseenter
が実装されていることから生ずるアーチファクトのようです。
問題は、mouseenter
イベント(hoverOn
の一部、.hover()
の部分)が発生しないようにすることです。新しいイオニコンがテンプレートから作成されるたびに、カーソルが少し動くとmouseenter
イベントが発生します。 は、リスナー要素またはその子孫がホバーオーバーされたときにトリガーする必要があり、カーソルがイベントに関連付けられているすべての要素を残してから呼び出したときに呼び出されるため、論理的にmouseenter
がトリガーされないようにする必要があります。再び。私はこれがそのようなテンプレートから要素を作成する人工物だと思う。 DOMが更新され、カーソルがすでに要素内にあるという事実が破棄されるためかもしれません。したがってmouseenter
が再びトリガーし、新しい再生アイコンが作成されます。その後、それが繰り返されます。
このcodepenはそれをうまく説明する必要があります。再生ボタンの上にマウスを置くと、マウスを動かすたびに新しいボタンが作成されるため、mouseenter
のカウンターはマウスを動かすたびに増加します。新しい再生ボタンを作成する行を削除すると、カーソルが要素に入ったときにだけトリガーするように、mouseenterが動作するように動作します。
ありがとうございます、あなたの答えは良いですが、hide()はここでより適しているようですが、私の質問はより理論的なものです。それがどうなるのか理解しようとしています:/ – redFur
@ IvanInTheHatは、hovOn関数のconsole.log( '何でも')によってポイントを得ることができるかもしれません。コンソールを見るとtd hover、td click、クリック –
はい、それを考え出して、感謝しました! – redFur