2011-02-17 84 views
0

我有一點問題。我試圖用Jquery load()函數使用AJAX加載頁面上的東西。內容加載完成後,再次點擊鏈接,我需要加載內容以上傳/隱藏;並且當點擊3次以上的同一鏈接時,我只需切換加載的內容顯示,因爲它已經加載一次。鏈接點擊後Jquery類被刪除,但第二次點擊仍然被識別

我的問題是,單擊鏈接一次後,我刪除了loadable類,但在第二次點擊時,同樣的函數執行,就好像類仍然存在。這是我的HTML:

<a title="Food" id="food" class="loadable" href="get-taste/food">Food</a> 
<div class="food_load_space"></div> 

該鏈接觸發負載和數據加載到.food_load_space。這是我的JS:

$(document).ready(function(){ 
    $('a.loadable').click(function(){ //executed upon link click 1; 
    url = $(this).attr('href'); 
    linkid = $(this).attr('id'); 
    toload = url + ' #content-area'; 
    //now, remove loadable, add loaded and expanded 
    $(this).removeClass('loadable'); 
    alert(toload); 
    $('.' + linkid + '_load_space').load(toload); 
    return false; 
    }); //kill loadable 

我也這樣腳本知道添加.expanded類和.loaded類計劃在該州的聯繫是什麼,但偏偏就是這個功能火災就算了。 .loadable班不見了。

+2

請修復代碼部分。 – 2011-02-17 02:53:05

回答

3

該事件已經被綁定到元素,你需要手動unbind從元素的事件(S )有問題。這可以通過撥打$(this).unbind('click');完成。

您也可能希望檢查元素是否具有事件函數中的類。

+0

嗨,安德魯,我試過了,但在解綁後,第二次調用不會綁定。要嘗試使用條件來檢查。 – MrMaksimize 2011-02-17 13:29:30

+0

好吧,這很糟糕。出於某種原因,第二個「點擊」不會綁定。所以我只是把它全部保存在一個函數中,只是做了一次hasClass檢查。爲這個想法謝絕了! – MrMaksimize 2011-02-17 13:33:57

2

您的第二次點擊被識別的原因是因爲jQuery已經將操作綁定到了您的元素。您只能通過刪除課程來解除綁定。該類僅用於幫助您選擇該元素(並設計您的元素)。

要刪除的事件綁定,在你點擊功能,你應該這樣做:

$('a.loadable').click(function() { 
    ...your other code... 
    $(this).unbind('click'); 
}); 
+0

嗨Kchau,我試過了,但在解綁後,第二次調用不會綁定。有任何想法嗎?提前致謝! – MrMaksimize 2011-02-17 13:28:57

3

處理程序綁定了元素,而不是選擇器。

如果您只希望它存在一次點擊,請使用one()(docs)方法將其綁定。

$('a.loadable').one('click', function(){ 
    // and so on... 

它會在第一次點擊後自動解除綁定。