2013-04-15 97 views
0

我有几个按钮,但取决于选择什么单选按钮,我想要发生2件事情之一。例如jquery删除onclick事件

当建筑物单选按钮被选中,并点击按钮,然后显示所有的建筑物,但不显示公园。 类似地,当选中公园单选按钮时,点击按钮显示所有公园但不显示建筑物。

我想删除不需要的相应功能的onclick事件,我可以这样做。

$('#youLinkID').attr('onclick','').unbind('click'); 

然而,这将消除BOTH的onclick事件。

有没有办法只删除1个onclick事件,可能是通过名称,或者按名称添加一个onclick事件的方法?

编辑: 所以我用马克的帮助下和使用的命名空间,以及与此想出了:

$('#showOver').bind('click.buildOver', function(){ 
     $(this).unbind('click.parkOver') 
    }); 

不工作,但是,我知道它的调用它,因为它的工作运行我的测试,

.css({"backgroundColor":"black","color":"white"}) 

似乎它仅仅指刚不添加buildOver的onclick事件()函数

+0

做ü对同一控制2'click'事件? –

+0

为什么不使用不同的ID为这两个单选按钮,并尝试删除特定的单选按钮事件(基于ID),当不需要时添加,并在需要时添加。 – dreamweiver

+0

使用命名空间在这里似乎是更好的选择 –

回答

2

您可以使用命名空间unbind一个partiuclar单击处理。

$("a").bind("click.pick1", function() { 
    alert('pick 1'); 
    $(this).unbind("click.pick1"); 
}).bind("click.pick2", function() { 
    alert('pick 2'); 
}); 

Example on jsfiddle

+0

请参阅OP编辑 – jerrythebum

+0

使用on和off事件而不是弃用bind和unbind events.deprecated。 – Foreever

0

检查:DEMO

<a href="#" onclick="alert('hello');">I produce an alert via onclick</a> 
<a href="#" onclick="alert('hello');">Me too</a> 

<a href="#" onclick="$('a').removeAttr('onclick');">I remove them</a> 

的诀窍是这样的代码:

$('a').removeAttr('onclick'); 

REFERENCE