2013-03-23 252 views
0

我用Ajax加載一個div容器內的HTML頁面。 HTML內容加載元素上點擊這樣的:避免重裝Ajax內容

$(".link").click(function() { 
    $('.link').removeClass('current'); 
    $(this).addClass('current'); 
    ajaxify($(this).attr('href')); 
    window.location.hash = $(this).attr("href"); 
    return false; 
}); 

我想避免重新加載的內容,如果在互聯網瀏覽器的URL哈希值是一樣的$(".link").attr("href")。 所以當我再次點擊相同的元素時,我希望沒有任何事情發生。

目前,如果我在相同的元素再次點擊,相同的內容加載Ajax調用。

盧瓦克

+0

'ajaxify()'做了什麼?這是圖書館的功能,還是你寫的東西。 – 2013-03-23 16:03:40

回答

0

更改選擇從$(".link")$(".link:not(.current)"),讓你的點擊處理將只對那些不具備類current鏈接調用。

更新:這是不行的,因爲jQuery分配點擊功能上的document.ready(或其它地方的代碼會被執行)和點擊不檢查選擇的所有鏈接。因此,你需要在點擊處理程序來檢查類current,像這樣:

$(".link").click(function() { 
    if($(this).hasClass('current')) return false; 
    ... 
}); 
+0

謝謝你,但它不會改變任何東西.. – lolo 2013-03-23 15:57:47

+0

我更新我的回答 – darthmaim 2013-03-23 16:03:18

0

你可以簡單地使用window.location對象(或簡稱location如果window是當前範圍),並比較它的href財產你的鏈接。

$(".link").click(function() { 
    if ($(this).attr('href') != location.href) { 
     $('.link').removeClass('current'); 
     $(this).addClass('current'); 
     ajaxify($(this).attr('href')); 
     window.location.hash = $(this).attr("href"); 
     return false; 
    } 
}); 

如果你的鏈接是一個相對路徑,可以使用的location.pathname代替location.href

+0

謝謝。我試過這段代碼,但它不起作用。內容仍然重新加載。我只是確切的說,href沒有散列,瀏覽器url在我的ajax內容加載器中添加了一個散列。 – lolo 2013-03-23 15:57:25

+0

請放的console.log($(本).attr( 'href' 屬性))例如 – martriay 2013-03-23 23:58:47

+0

謝謝,但問題是這種解決:( '鏈接')$點擊(函數(){VAR 鏈接= $。 ('。'); if(!link.hasClass('current') ( 'HREF')); window.location.hash = link.attr(的 「href」);} 返回false; }); – lolo 2013-03-24 00:04:45

0

你可以使用這個事實,你添加「當前」類選擇鏈接到在有條件地執行代碼處理程序,如下所示:

$('.link').click(function() { 
    var link = $(this); 
    if (!link.hasClass('current')) { 
     $('.link').removeClass('current'); 
     link.addClass('current'); 
     ajaxify(link.attr('href')); 
     window.location.hash = link.attr("href"); 
    } 
    return false; 
}); 
+0

非常感謝!它的作品非常瞭解! – lolo 2013-03-23 16:08:33