2014-11-14 192 views
0

所以基本上,我面臨一個問題。jquery更改事件

我有一系列可彈出的div(下拉菜單),它們內部有一個「關閉」按鈕,在普通視圖中,這會觸發可彈出的div關閉。

我改變了功能,在某些divs內,有一個鏈接轉換到另一個div,這工作正常。

問題:

我想要的「X」按鈕的功能改變,這取決於用戶所在的國家,所以基本上改變了事件偵聽器。所以,如果用戶在標準的彈出div中,請點擊「X」div被關閉。如果用戶已經轉換到另一個div,那麼一旦點擊了「X」按鈕,它應該回到主div。

目前,我已經嘗試了以下操作,並且它可以工作,但是在第一次之後,每次單擊「X」時都會彈出一條警報。 (我現在只想讓警報進入輔助分區)。

$('.grantsPage').click(function() 
    { 
     $('.X').bind("click", function(){ 

      alert("Clicked"); 
      e.preventDefault(); 
     }); 
     $(".subContentDiv").slideUp(); 
     $("#divemployers-grants").slideDown().addClass('active'); 
     scrollToSubSection('id3'); 
     e.preventDefault(); 

    }); 

任何想法,我要去哪裏錯了?

+0

'on'和'優於'綁定/ unbind'使用jQuery的更高版本off'。你使用的是什麼版本的jQuery? –

+0

添加嵌套在點擊處理程序中的點擊處理程序通常是問題的標誌。將它們分開,然後檢查處理程序中的div打開/關閉狀態。請顯示一些合適的HTML,以便我們可以提供一個適當的示例(例如,從Chrome F12 DOM檢查器保存DOM的一部分):) –

+0

如果第一個'e'與'X'一起,第二個與'grantsPage'一起使用,你需要爲每個函數添加'e'作爲參數。 –

回答

0

我覺得unbind可以做的伎倆:

$('.grantsPage').click(function() { 
    $('.X').bind("click", function(){ 

     alert("Clicked"); 
     $('.X').unbind(); 
     e.preventDefault(); 
    }); 
    $(".subContentDiv").slideUp(); 
    $("#divemployers-grants").slideDown().addClass('active'); 
    scrollToSubSection('id3'); 
    e.preventDefault(); 

}); 
+0

感謝您的回覆。如果我在那裏解除綁定,那麼當它返回到正常的div時,它不會被重新綁定,因此功能會停止? – Phorce

+0

你試過這個嗎?你可以顯示你的html嗎? –

+0

是的,我試過了。它正在工作,但是當你解除這個事件時,你將它解除綁定整個元素,它永遠不會重新綁定。我無法向您展示HTML,因爲它是一個相當大的網站 – Phorce