jquery附加事件与类执行多次

时间:2012-05-15 17:19:38

标签: javascript jquery

我有同一个班级的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附加事件。这可能吗?

2 个答案:

答案 0 :(得分:1)

事件不会绑定三次。但是当你移动到下一个div时,你可能会得到一个div的鼠标输入,你可以将鼠标移出这个潜水和其他div的mouseenter。

进入第一个div,然后进入第二个激活三个事件

  1. 第一个div的鼠标中心
  2. 第一个div的mouseout
  3. 第二个div的mouseenter

    Demo on JsFiddle

  4. 由于脚本没有为我执行,因此在关键字函数后添加括号我做了一点改动。

    $(".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);
         }
        }
    );​
    

答案 1 :(得分:1)

我不确定,但这应该会有所帮助:

busy = false;
$(".same").live(
{mouseenter : function ()
    {
        if(busy==false){busy = true; /*code*/}
    },
 mouseout: function ()
    {
        if(busy==true){/*code*/ busy = false;}
    }
});