2011-02-03 15 views
0

AJAXを中心に構築されているので、私のサイトのために逆リンクを実装する必要があります。私は基本的な考え方を理解しており、私のトップレベルのナビゲーションにデインターリンクが実装されています。問題は私のサイトに複数のレベルがあることです。ユーザは、上のナビゲーションをクリックして、ハッシュに追加し、セカンダリナビと三次ナビをクリックすることができます。私はまた、この二次および三次のnavをハッシュに追加する必要があります...そして、ユーザーが主なnav項目をクリックしたときにその項目を削除することもできます。私はこれを行う方法を考えることができません...任意のアイデア?複数のレベルで逆方向リンクを実装する

ああ、私は、プライマリナビゲーションバー上のハッシュを達成するために使用しているコード(jQueryの)は次のとおりです。

updateHash : function(hash) { 
    var hashHistory = []; 
    location.hash = hash; 
} 
+0

誰?質問は不明ですか? –

答えて

2

私はあなたが探しているものはかなり確実ではありません」。たぶん、いくつかの具体的な例を示すべきでしょう。それまではどのようにこのようなものについて:

function updateHash(hashPath) { 
    if (hashPath.charAt(0) == "/") { 
    location.hash = "#" + hashPath; 
    return; 
    } 

    var currentHash = location.hash.split(/\//); 
    if (currentHash[0]) currentHash[0] = currentHash[0].substr(1); // Loose the # 

    var relHash = hashPath.split(/\//); 

    var part; 
    while (part = relHash.shift()) { 
    if (part == "..") { 
     currentHash.pop(); 
    } else { 
     currentHash.push(part); 
    } 
    } 

    if (currentHash.length > 0) 
     location.hash = "#" + currentHash.join("/"); 
    else 
     location.hash = ""; 
} 

例:

updateHash("/topLevelItem"); 
alert(location.href); // "www.example.com/#/topLevelItem" 

updateHash("secondLevelItem"); 
alert(location.href); // "www.example.com/#/topLevelItem/secondLevelItem" 

updateHash("thirdLevelItem"); 
alert(location.href); // "www.example.com/#/topLevelItem/secondLevelItem/thirdLevelItem" 

updateHash("../differentThirdLevelItem"); 
alert(location.href); // "www.example.com/#/topLevelItem/secondLevelItem/differentThirdLevelItem" 

updateHash("../../differentSecondLevelItem"); 
alert(location.href); // "www.example.com/#/topLevelItem/differentSecondLevelItem" 

updateHash("../anotherSecondLevelItem/anotherThirdLevelItem"); 
alert(location.href); // "www.example.com/#/topLevelItem/anotherSecondLevelItem/anotherThirdLevelItem" 

updateHash(".."); 
alert(location.href); // "www.example.com/#/topLevelItem/anotherSecondLevelItem" 
+0

そのコードは本当に有望ですね、ありがとう!私は混乱しています。ユーザーが2番目のレベルのアイテムをクリックして、ハッシュを追加するためにupdateHash関数を使用した場合、ユーザーが別の2番目のレベルのリンクをクリックして、../differentsecondlevellinkを送信する必要があることを、/secondlevellinkを次回の更新時にupdateHash関数に追加しますか?ユーザーがどのレベルにいるのかを追跡し、ユーザーが2番目のレベルにあり、2番目のレベルのリンクをクリックしてから、updateHashに送信される引数の前に../を追加しているような何らかのロジックを実行しますか? –

+0

これは問題ありません。あなたの投稿に多くの感謝...本当に私を助けた! –

関連する問題