2012-05-16 83 views
3

我在jQuery上的按鈕事件在顏色框彈出框內的按鈕上出現問題。如何解除事件並在jQuery中附加新的事件

按鈕如下:

<div id="popup"> 
    <button class="close_bu">Close</button> 
</div> 

在默認情況下有以下事件附:

jQuery('.close_bu').bind('click',function(){   
      jQuery.colorbox.close(); 
}); 

當我火了另一個事件我想改變默認的行爲,所以我下面:

jQuery('#anotherpopup').on('click','.deleteplan_button',function(){ 

      jQuery('#popup .close_bu').addClass('returnBack'); 
      jQuery('#popup .returnBack').removeClass('close_bu'); 

      jQuery.colorbox({inline:true , href:"#popup", opacity: 0.6, width: "600px"}); 
return false; 
     }) 

的我已經說:

jQuery('#popup').on('click','.returnBack',function(){ 
       e.preventDefault(); 
       //Do something 
}) 

但是,附加到.returnBack的新事件無法正常工作,當我單擊該按鈕時觸發了關閉事件,它並不重要,該按鈕沒有.close_bu類了,它繼續觸發該事件。

我是個有點困惑:S

回答

2

在你的代碼中有一個id popup沒有元素。所以jQuery('#popup')什麼都不做(或者你沒有向我們展示代碼的重要部分)。

更新:

您將需要'#popup .close_bu'使用.unbind()不是刪除類

$('#popup .close_bu').unbind('click'); 

,你只需選擇要與事件要連接的元素,或在這種情況下,從事件中脫身。 jQuery的CSS選擇器只是看起來像CSS。事件和處理程序之間的連接不使用css。 添加和刪除類的全部技巧是觸發不同的CSS樣式,它只會改變一個元素的外觀,但不會改變事件。

+0

我沒有包括div的sorrounding按鈕,我編輯了我的問題。謝謝 – chifliiiii

+0

你必須使用.unbind()看我的更新 – snies

+1

我很困惑,爲什麼你使用bind而不是.on和.off?不回答你的問題,或以任何方式幫助,哈哈,但滿足我的好奇心? – sngregory