1

ネストされたレベルのカテゴリを持つサイトのナビゲーションにjQuery Treeviewプラグインを使用しています。各カテゴリには製品があり、それぞれに 1 つ以上の情報タイプがあります。

したがって、私の URL は次のいずれかになります。

  1. foo.com/view/cat_id/
  2. foo.com/view/cat_id/prod_id/
  3. foo.com/view/cat_id/prod_id/info_id/

問題は、製品のナビゲーションがカテゴリとは別であることです。つまり、Treeview はケース 1 のみを「知っている」(したがって、「アクティブ」とマークする) ことを意味します。ケース 2 と 3 は、ツリーが折りたたまれていることを意味しますが、私はツリーをすべてのケースで cat_id に対してオープンであること。

(私は何に対してもオープンですが)解決策は、URLから cat_id/ の後にあるものをすべて削除して、結果をTreeviewに渡すことができるJavascriptのトリックだと考えていますが、Javascriptでそれができるわけではありませんそれを行う方法を理解していません。

注: Treeview ではなく、Javascript 正規表現のヘルプを探していますが、万一、既製のソリューションを知っている人がいるかもしれませんが、私はもちろん耳を傾けています。

ティア。

4

1 に答える 1

1

友人の助けを借りて (Sawks に感謝)、他の誰かが同じボートに乗っている場合に備えて、私自身の質問に対する答えを提示します。

jquery.treeview.js 内の 206 から始まる行を次のように変更しました。

case "location":
    var current = this.find("a").filter(function() { return this.href.toLowerCase() == location.href.toLowerCase(); });
    if ( current.length ) {
        current.addClass("selected").parents("ul, li").add( current.next() ).show();
    }
    break;
}

に:

case "location":
    var current_location = location.href.toLowerCase();
    var current_base = current_location.split('/').slice(0,5).join('/')+'/';
    var current = this.find("a").filter(function() { return this.href.toLowerCase() == current_base; });
    if ( current.length ) {
        current.addClass("selected").parents("ul, li").add( current.next() ).show();
    }
    break;
}
于 2008-12-05T04:48:24.260 に答える