4

これは、この他のスレッドも参照しています: jQuery - URL が href に一致する場合、LI を UL の先頭に移動しますか?

Jクエリコード:

//set var to current url
var url = window.location.toString();

//if url matches li's anchor then bring it to the top of the list
$('.nav li a').each(function(){
   var myHref= $(this).attr('href');
   if( url == myHref) {
        $(this).closest("li").prependTo(".nav");
   }
});

HTMLはWordpressナビゲーションからのものなので、次のようなものです:

<navrole="navigation">
  <ul>
    <li>
      <a href="">

ナビゲーションはカテゴリを指し、URL は href の罰金と一致し、コードは機能します。しかし、たとえば、URL が次の場合など、カテゴリの子ページにいるときにコードを起動する方法がわかりません。

domain.com/category-name/child-page

ドメインを通過した最初のパス名のみを Jquery に検出させることができれば、成功します。最初のパス名より後のものは、省略したり、ワイルド カードなどとして設定したりできます。

何か案は?

4

3 に答える 3

2

を使用して試すことができますattribute contains selector

var dom = document.domain;
var f = location.pathname.split('/')[1]; 
var url = dom + "/" + f;

$('.nav li a[href*="'+url+'"]').closest("li").prependTo(".nav");
于 2012-10-07T01:36:02.607 に答える
0

私は自分のウェブサイトにそのようなテクニックを実装していました。これが私がそれをした方法です:

var Tabs = ["Tab1", "Tab2", "Tab3", "Tab4", "Tab5"];
var pathname = document.location.pathname;
for (var i = 0; i < Tabs.length; i++) {

    //RegExp to check the name after first '/'
    var TabRE = new RegExp("^\/(" + Tabs[i] + ")");
    if (TabRE.test(pathname)) {
        //Tab identified!!!
    }

または、単に「ドメインを通過した最初のパス名」を取得したい場合は、簡単に行うことができます

var path = (document.location.pathname).substring(1);
var name;
if (path.indexOf('/') >= 0)
    name = path.substring(0, path.indexOf('/'));
else name = path;
于 2012-10-07T01:27:27.337 に答える
0

パス名を使用して、ドメイン名以降のすべてにアクセスする必要があります。次に、文字列をスラッシュで分割します。

var pathname = window.location.pathname;  //"category-name/child-page"
var path_components_arr = pathname.split("/");  //array containing components from above, in order.

次に、path_components は配列を提供します。各要素はスラッシュ間のパスの一部です。その配列の最初の要素だけが必要なように聞こえます...そこから取得できると確信しています!

それが役立つことを願っています!

于 2012-10-07T01:32:00.080 に答える