Jquery 带有嵌套ul元素的下拉列表
我有一些嵌套的ul元素。我希望在单击父li元素时,将隐藏的ul元素下拉。我得到了这个工作,然而,它下降了每一个ul元素与我的“下拉”类。我怎样才能让它只下载被点击的li的子ulJquery 带有嵌套ul元素的下拉列表,jquery,html,Jquery,Html,我有一些嵌套的ul元素。我希望在单击父li元素时,将隐藏的ul元素下拉。我得到了这个工作,然而,它下降了每一个ul元素与我的“下拉”类。我怎样才能让它只下载被点击的li的子ul <ul id="Ben" class="standDrop"> <li class="dropClick">First li <img class="dropImg" src="img/preDropArrw.svg"> </li>
<ul id="Ben" class="standDrop">
<li class="dropClick">First li
<img class="dropImg" src="img/preDropArrw.svg">
</li>
<!--nested ul for drowdown-->
<ul class="dropDown">
<li>info</li>
<li>info</li>
<li>info</li>
<li>info</li>
<li>info</li>
</ul>
<!--end nested ul for drowdown-->
<li class="dropClick">second li
<img class="dropImg" src="img/preDropArrw.svg">
</li>
<!--nested ul for drowdown-->
<ul class="dropDown">
<li>info</li>
<li>info</li>
<li>info</li>
<li>info</li>
<li>info</li>
</ul>
<!--end nested ul for drowdown-->
</ul>
我将稍微重新构造HTML以实现以下目标:
<ul id="Ben" class="standDrop">
<li class="dropClick">First li
<img class="dropImg" src="img/preDropArrw.svg" />
<!--nested ul for drowdown-->
<ul class="dropDown">
<li>info</li>
<li>info</li>
<li>info</li>
<li>info</li>
<li>info</li>
</ul>
</li>
<!--end nested ul for drowdown-->
<li class="dropClick">second li
<img class="dropImg" src="img/preDropArrw.svg" />
<!--nested ul for drowdown-->
<ul class="dropDown">
<li>info</li>
<li>info</li>
<li>info</li>
<li>info</li>
<li>info</li>
</ul>
</li>
<!--end nested ul for drowdown-->
</ul>
工作
2变化
a。使li.dropClick的ul.下拉列表
元素子元素
b。使用$this.find(“.dropDown”)
查找单击元素的相应菜单。使用jQuery方法“find”或“children”查找特定选择器中的元素。由于您的“dropClick”元素是发生单击的元素,因此该事件处理程序中的“this”引用将引用该元素。然后,使用“find”或“children”只引用“this”元素中与选择器匹配的元素。子元素只会立即抓取元素中的项,其中“find”将搜索整个子树,并查找您可能拥有的子菜单
关于子项的jQuery文档:
查找jQuery文档时:
代码,例如:
$(document).ready(function(){
$(".dropClick").click(function(){
$(this).children(".dropDown").slideToggle("slow");
});
});
编辑:我在回答另一个问题时发了帖子,甚至没有注意到LI之外的UL。正如karthikr指出的,应该改变结构,使UL成为LI的子节点。规范规定只有LIs是ULs的子级。子列表必须包含在列表项中。谢谢!我应该更了解html,但我永远不会得到jQuery!
$(document).ready(function () {
$(".dropDown").hide();
$(".dropClick").click(function () {
$this = $(this);
$this.find(".dropDown").slideToggle("slow");
});
});
$(document).ready(function(){
$(".dropClick").click(function(){
$(this).children(".dropDown").slideToggle("slow");
});
});