jQuery Selector.size()保持返回零

时间:2011-03-19 10:36:45

标签: jquery asp.net-mvc asp.net-mvc-3 razor

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

当我试图隐藏子类别以尝试创建某种定制的手风琴菜单时,没有任何反应。在调试时,我正在尝试提醒类别集合的大小,并且我一直都是零,尽管所有内容都按照它应该的方式显示在屏幕上。这是代码:

//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好,它总是让我生气,因为我觉得它“不可预测” - 好吧也许是因为我更喜欢在后端工作。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

<div class="sharwe-categories">

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

你上过div的课程,但试图通过#(id)找到它。 $('.sharwe-categories .menu li.topLevel');

使用jquery可能会在启动时感觉不可预测,并且不知道javascript限制(比如在未插入DOM时尝试检测元素大小),但最终你会发现jQuery实际上解决了所有跨浏览器javascript问题(还有更多)。

顺便提一下误导的标题:)