2013-04-15 98 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