2011-03-19 5 views
0

ASP.NET MVC Webアプリケーションを構築していて、クライアント側のプログラミングにjQueryを使用しています。私はデータベースからデータを取得し、クライアント側で動的に生成されるカテゴリ表示を持っています。jQuery Selector.size()は0を返し続けます。

カスタマイズされたアコーディオンメニューを作成しようとしてサブカテゴリを非表示にしようとすると、何も起こりません。デバッグするとき、私はカテゴリコレクションのサイズを警告しようとしていますが、すべてがスクリーン上に表示されているにもかかわらずゼロになっています。ここでは、コードです:

//markup (my view-engine is Razor) 
<div class="sharwe-categories"> 
    <ul class="menu menu-vertical menu-accordion"> 
     @foreach(var topLevel in Model.Categories) 
     { 
      <li class="topLevel"> 
       <h3> 
        <a href="#" class="main">@topLevel.Name</a> 
        <a href="#" class="drop-down"></a> 
       </h3> 
       <ul class="childCategories"> 
        @foreach (var childCategory in topLevel.Children) 
        { 
         <li><a href="#">@childCategory.Name</a></li> 
        } 
       </ul> 
      </li> 
     } 
    </ul> 
</div> 

//Javascript code: 
$(document).ready(function() { 
    var $categories = $('#sharwe-categories .menu li.topLevel'); 
    var $categories_children = $('ul.childCategories', $categories).hide(); 
    var $categories_dropdown = $('a.drop-down', $categories); 
}); 

は正直に言うと、私はjQueryを使って良いことはなかったと私はそれが「予測不可能」だと感じているため、それはいつも私を怒らせる - まあ、私が代わりにバックエンドのものに取り組ん好むかもしれないので。

ご協力いただければ幸いです。

答えて

2
<div class="sharwe-categories"> 

$('#sharwe-categories .menu li.topLevel'); 

divにクラスがありますが、#(id)で検索しようとしています。 $('.sharwe-categories .menu li.topLevel');

jqueryを使用すると、開始時に(DOMに挿入されていない要素のサイズを検出しようとするなどの)javascriptの制限がわからない場合がありますが、実際にはjQueryがすべてのクロスを解決する - ブラウザのJavaScriptの問題(とはるかに)。

途中でかなり誤解を招くタイトル:

+0

DAMN!私はこの愚かな間違いのために、私は過去2時間を壁にぶつけて過ごしたことは信じられません! :Sあなたの鋭い目に感謝ルーカス! +1 – Kassem