1

我有一些具有相同班级的 div 说:

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

我附加事件处理程序所有 div :

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

现在我的问题是当 mouseenters 到 div 时(id="1"),mouseenter 函数的代码将执行 3 次可能是因为有 3 个 div,class="same"但我希望它只执行一次并且不附加带有 id 的事件。这可能吗?

4

2 回答 2

1

该事件不绑定三次。但是当你移动到下一个 div 时,你可能会得到一个 div 的鼠标进入,你会从这个潜水中得到鼠标,而另一个 div 的鼠标进入。

移动到第一个 div 然后到第二个会触发三个事件

  1. 第一个 div 的 mouseenter
  2. 第一个 div 鼠标移出
  3. 第二个div的鼠标输入

    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 回答