我正在构建一个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好,它总是让我生气,因为我觉得它“不可预测” - 好吧也许是因为我更喜欢在后端工作。
非常感谢任何帮助。
答案 0 :(得分:2)
<div class="sharwe-categories">
$('#sharwe-categories .menu li.topLevel');
你上过div的课程,但试图通过#(id)找到它。 $('.sharwe-categories .menu li.topLevel');
使用jquery可能会在启动时感觉不可预测,并且不知道javascript限制(比如在未插入DOM时尝试检测元素大小),但最终你会发现jQuery实际上解决了所有跨浏览器javascript问题(还有更多)。
顺便提一下误导的标题:)