2017-12-22 6 views
1

一部の項目を動的に変更する必要があるため、一部のナビゲーションHTMLをループしています。具体的には、Droppableクラスを使って各アイテムをどのようにループし、特定の子のjQueryオブジェクトを取得するのでしょうか。私はjqueryオブジェクトとして操作する必要があるもののメモを示すアスタリスク(*)の束を下に自分のコードを掲載しました。jQueryで要素をループする

<nav id="sitenav"> 
    <ul class="container ul-reset"> 
     <li class="droppable "> ****** foreach of these 
      <a class="RootNode" id="Help" href="javascript:;">HELP</a> ****** I need this 
      <div class="mega-menu"> 
       <div class="container cf"> 
        <div style="display: inline-block;"> 
         <ul class="ul-reset"> ****** and I need this 
          <a class="heading disabled" id="Help_Help" href="javascript:;"> 
           <h3>Help</h3> 
          </a> 
          <a id="ContactUs" href="/ContactUs/">Contact Us</a> 
          <a id="UserGuides" href="/Help/">User Guides</a> 
         </ul> 
        </div>         
       </div> 
      </div> 
     </li> 

     {more lis with the same structure...} 

    </ul> 
</nav> 

私は以下を試みたが、私は、これは私は、これは現在のjQueryのは、各ループからDOM要素を包んだだろうと思ったので、私はそれが思ったfindメソッドを持っていないというエラーが出ます。

$("li.droppable").each(function (index) { 
    var header = this.find("a.RootNode"); 
    var col = this.find("ul.ul-reset"); 
}); 

答えて

4

.find() jQueryの方法であり、あなたはDOMオブジェクトthisでそれを呼び出すことはできません。

それがあるべきようにするには、代わりに、jQueryオブジェクト$(this).find()メソッドを呼び出すことができます:DRYとキャッシュ `変数$を滞在し、これは$(this)を=

$("li.droppable").each(function(index) { 
    var $this = $(this); 

    var header = $this.find("a.RootNode"); 
    var col = $this.find("ul.ul-reset"); 
}); 
+2

ベスト;' – Jamiec

関連する問題