2

一連のページがあり、そのタイトルはvarに格納されています。

ナビゲーションリンクに対応するページに対して何かを行うスクリプトを作成したいと思います。私のサイトでは、ナビゲーションリンクのタイトルと名前が同じであるため、以下のようにifと各ステートメントを使用します。

$.each($("#menu ul li ul li ul"), function() {
  if($(this).find("a").html() == pagetitle){
    //DO SOMETHING
  }
});

問題は、これは一度だけループするように見えることです。最初のliとタグのみを取得するため、1ページでのみ機能します。

誰かがこれを修正する方法を提案できますか?

編集:html:

<div id="menu">
    <ul>
    <li><a href="somewhere.html">enu Item</a>
      <ul>
        <li><a href="somewhere.html">Menu Item 2</a>
            <ul>
               <li><a href="somewhere.html">Menu Item 3</a></li>
               <li><a href="somewhere.html">Menu Item 4</a></li>
               <li><a href="somewhere.html">Menu Item 5</a></li>
               <li><a href="somewhere.html">Menu Item 6</a></li>
             </ul>
        </li>
        <li><a href="somewhere.html">Menu Item 7</a></li>
        <li><a href="somewhere.html">Menu Item 8</a></li>
      </ul>   
    </li>
    </ul>
</div>
4

4 に答える 4

0

あなたのコードは3番目を選択しているので<ul>、それは一度だけ見つけられ<ul>ます..あなたはまで選択しなければなりません<li>....私はあなたが<li>そこで逃したと思います

 $.each($("#menu ul li ul li ul li"), function() {
   if($(this).find("a").html() == pagetitle){
//DO SOMETHING
 }
});

注:これは3番目にのみ機能し<ul>ます私はそれがあなたが求めているものだと思います..すべてなら<li>あなたは使うことができます

$.each('#menu li')... //as a selector

フィドルでのこの例

于 2013-02-18T06:10:41.510 に答える
0

このスクリプトを使用してみてください

$("#menu").find("li").each(function(){
  if ($(this).find('a').html() == pagetitle) {
    // do
  }
});
于 2013-02-18T06:18:55.803 に答える
0

このように、はるかに短い方法でループすることができます。

$.each($("#menu li"), function() {
  if($(this).find("a").text() == pagetitle){
     //DO SOMETHING
  }
});

ノート:

.text()の代わりに使用.html()

于 2013-02-18T06:15:11.177 に答える
0

なぜだけではないのですか?

$.each($("#menu a"), function() {
  if($(this).html() == pagetitle){
    //DO SOMETHING
  }
});
于 2013-02-18T06:06:19.000 に答える