1

同じクラスの div がいくつかあります。

<div id="1" class="same">..</div>
<div id="2" class="same">..</div>
<div id="3" class="same">..</div>

eventhandler all div を添付します:

$(".same").live({mouseenter : function{ /*code*/ },mouseout: function{ /*code*/ }})

今私の問題は、 mouseenters が div に移動したとき(id="1")です。mouseenter 関数のコードは 3 回実行されますが、これは 3 つの div があるためかもしれませんがclass="same"、ID を使用してイベントを添付せずに 1 回だけ実行したいのです。これは可能ですか?

4

2 に答える 2

1

イベントは3回バインドされません。ただし、次のdivに移動すると、このダイビングからマウスを取り出し、他のdivのmouseenterを取得する場合があります。

最初のdivに移動し、次に2番目のdivに移動すると、3つのイベントが発生します

  1. 最初のdivのmouseenter
  2. 最初のdivのマウスアウト
  3. 2番目のdivのmouseenter

    JsFiddleのデモ

スクリプトが実行されていなかったため、キーワード関数の後に括弧を追加して少し変更しました。

$(".same").live({mouseenter : function{ /*code*/ },mouseout: function{ /*code*/ }})

$(".same").live({mouseenter : function(){ /*code*/ },mouseout: function(){ /*code*/ }})

このコードを実行して、何が起こっているかを確認できます

 $(".same").live(
    {
     mouseenter : 
     function()
     { 
         alert(" mouseenter >>Current Div ID = "+ this.id);
     },
     mouseout: 
     function()
     { 
         alert("mouseout >>Current Div ID = "+ this.id);
     }
    }
);​
于 2012-05-15T17:55:04.507 に答える
1

よくわかりませんが、これは役立つはずです。

busy = false;
$(".same").live(
{mouseenter : function ()
    {
        if(busy==false){busy = true; /*code*/}
    },
 mouseout: function ()
    {
        if(busy==true){/*code*/ busy = false;}
    }
});
于 2012-05-15T17:59:21.257 に答える