我有以下代码,当我点击它时,它给了我一个元素的id。我希望这只是在我点击它时给我一个元素的id而不是当我点击第二个元素时。
$("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 :(得分:2)
使用.one()
$("svg").one("click", function() {
if(this.id!='main_svg') {
divs[1]=this.id;
}
});
答案 1 :(得分:0)
您可以在使用后取消注册点击处理程序。
请参阅http://api.jquery.com/unbind/
编辑:看来你的问题应改写为“如何为特定元素运行jquery”,为了让它运行一个元素的id,将你的选择器从$("svg")
更改为$("#main_svg")
答案 2 :(得分:0)
通过off()
通常,您可以通过.off()
函数删除事件处理程序,在您的情况下,它将在最初调用之后处理:
$("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; }
});