0
我使用此代碼爲我的主站點導航,它通過ajax加載每個頁面並具有後備。ajax導航內的jquery ajax導航
$(function() {
var newHash = '',
$contentWrap = $("#content-wrap");
$("nav").on("click", "a", function() {
window.location.hash = $(this).attr("href");
return false;
});
$(window).on('hashchange', function() {
newHash = window.location.hash.substring(1);
$contentWrap.load(newHash + " #content");
});
$(window).trigger('hashchange');
});
這工作得很好,但是當我在內容加載例如從另一個頁面about.html我也裝載在了幾個鍵,導航#內容包內。
so#content-wrap現在包含一個數據框和一些更多用於導航的按鈕。當我點擊新導航時,它需要在數據框中加載新數據。
首先,我試圖複製上面的腳本,但與新的錨點,但是我得到一個衝突。
我想我需要某種if語句,我已經研究過類似if(function!== undefined)的東西,但不知道該怎麼做。
我不知道我有多好解釋自己,我很困惑解釋它,但基本上我想結合上面的代碼基本上相同的代碼下面沒有衝突。
$(function() {
var newHash = '',
$contentWrap = $("#content-wrap"),
$aboutWrap = $("#a-wrap");
$("#content-wrap").on("click", "a", function() {
window.location.hash = $(this).attr("href");
return false;
});
$(window).on('hashchange', function() {
newHash = window.location.hash.substring(1);
$aboutWrap.load(newHash + " #a-content");
});
$(window).trigger('hashchange');
});
更新:樣的作品了一點,但改變了計劃
$(function() {
var newHash = '',
$nav = $("nav a"),
$boxBtn = '',
$aboutWrap = '',
$contentWrap = $("#content-wrap");
$("nav").on("click", "a", function() {
$(this).addClass("nav-click");
window.location.hash = $(this).attr("href");
return false;
});
$contentWrap.on("click", "a", function() {
$(this).addClass("btn-click");
window.location.hash = $(this).attr("href");
return false;
});
$(window).on('hashchange', function() {
var $aboutWrap = $("#a-wrap"),
$boxBtn = $("div.btn a");
newHash = window.location.hash.substring(1);
if ($nav.hasClass("nav-click")){
$contentWrap.load(newHash + " #content");
$nav.removeClass("nav-click");
};
if ($boxBtn.hasClass("btn-click")){
$aboutWrap.load(newHash + " #a-content");
$boxBtn.removeClass("btn-click");
};
});
$(window).trigger('hashchange');
}); /*/end*/
嗨,感謝您的回覆。我知道這有時會成爲一個問題,但我不認爲這是事實。我認爲'$(window).on('hashchange',function(){'被調用兩次是問題,但我不知道如何放置一條if語句來防止這種情況。 – thom 2012-04-18 20:41:23
哦,我明白了,手動更改哈希,但也可以通過鏈接更改哈希,然後在函數內部檢查該變量時設置變量,如果該值爲假,那麼您知道它不是從內部檢查一個clickevent處理程序 – Opi 2012-04-19 09:10:33
嗨,是的,我有一個玩這個想法,我到了一個階段,它的工作原理(上面張貼),但後退按鈕不起作用,因爲我現在只在if語句中加載內容,所以回去需要更多的工作,我沒有時間去每次都加載整個主要內容,如果效率非常低,也會使後備更簡單。 – thom 2012-04-19 09:20:02