2011-03-19 45 views
0

我正在构建一个ASP.NET MVC Web应用程序,我正在使用jQuery进行一些客户端编程。我有一个类别显示从数据库获取数据,并在客户端动态生成。jQuery Selector.size()一直返回零

当我尝试隐藏子类别以尝试创建某种自定义的手风琴菜单时,没有任何反应。在调试时,我试图警告类别集合的大小,并且尽管一切都按照它应该显示的方式显示在屏幕上,但我仍然收到零。下面的代码:

//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)找到它。当你开始并且不知道JavaScript的限制时(比如在没有插入DOM的时候试图检测元素的大小),但是最终你会发现jQuery实际上解决了你的所有交叉问题浏览器JavaScript问题(以及更多)。

很不容易误导标题的方式:)

+0

DAMN!因为这个愚蠢的错误,我不敢相信我过去的2个小时几乎把我的头靠在墙上。 :S感谢你敏锐的目光卢卡斯! +1 – Kassem 2011-03-19 10:50:15