2016-06-07 78 views
0

我有下面的代码,当我点击它时,它给了我一个元素的id。我想这只是给我一个元素的ID,当我点击它时,而不是当我点击第二个元素时。如何让jquery只运行一次

$("svg").click(function() { 
    if(this.id!='main_svg') { 
     divs[1]=this.id; 
    } 
}); 

我是在用一个标志变量想用if条件,但我想知道是否有更好的解决了这个比低于

Var flag = 0; 
if($flag==0){ 
    $("svg").click(function() { 
     if(this.id!='main_svg') { 
      alert("second.one "+this.id); 
      divs[1]=this.id; 
      flag=1; 
     } 
    } 
}); 

回答

0

一个可以后注销单击处理已经用过。

http://api.jquery.com/unbind/

编辑:看来你的问题应该被改写,以“如何使特定元素的jQuery运行”,以使其运行一个元素的ID,从$("svg")你选择改变$("#main_svg")

0

明确通过off()

一般来说,移除事件处理程序,您可以通过.off()功能后删除事件处理程序,这在您R情形将被处理之后它最初被称为:

$("svg").click(function() { 
    if(this.id != 'main_svg') { 
     divs[1]=this.id; 
    } 
    // Kill event handler here 
    $('svg').off('click'); 
}); 

使用:one()确保至多单个执行

优选的方法可能是考虑使用.one()函数,它是专门设计来处理这种情况:

one():将处理程序附加到元素的事件。处理程序每​​个事件类型每个元素最多执行一次。

这将用作:

$("svg").one("click", function() { 
    if(this.id!='main_svg'){ divs[1]=this.id; } 
}); 
2

使用.one()

$("svg").one("click", function() { 
    if(this.id!='main_svg') { 
    divs[1]=this.id; 
} 
}); 
+2

这是我认为最好的解决方案,为您的问题 – dazlious