【问题标题】:Jquery: Adding toggle action to drop down menuJquery:将切换操作添加到下拉菜单
【发布时间】:2012-12-17 12:56:19
【问题描述】:

我正在尝试创建我自己的下拉导航,当单击箭头时会展开(现在只是跨度内的 >)

我的脚本循环遍历一系列 <li>s 并检查其中是否有子 <ul>。如果检测到<ul>,则将<span class='submenuarrow'> ></span> 附加到父<li>,以便用户可以单击某些内容来展开菜单。这在切换之前可以正常工作 - 子箭头跨度出现但单击时什么也不做。

这是因为我使用 find 来定位附加元素吗?我做错了什么吗?

我的完整脚本是:

$("#menu ul li").each(function() { 

var sub = $(this).find("ul");

//IF UL IS DETECTED
if (sub.size() > 0) {

//APPENDS ARROW TO LI
$(this).append("<span class='submenuarrow'> ></span>");

//ADDS TOGGLE
$(this).find("span").click(function() {
   $(this).find("ul").toggle("slow");
});//END TOGGLE    

}//END IF

});//END EACH

【问题讨论】:

  • 使用: .append("&lt;span class='submenuarrow'&gt; &amp;gt; &lt;/span&gt;");
  • 谢谢 - 您的语法是正确的,但对问题没有影响
  • 那是评论,不是答案 ;)
  • 抱歉,还有一条评论被删除了
  • @MeltingDog 我删除了我的答案,对不起,关于那个,误解了你的问题,我再看看。

标签: javascript jquery


【解决方案1】:

使用:has() 选择器很简单!

jsBin demo

$('#menu li:has(ul)').each(function() {   
    $(this).append( "<span class='submenuarrow'> &gt; </span>" );  
});

$('#menu').on('click','.submenuarrow',function() {
    $(this).prev("ul").slideToggle("slow");
});

也适用于:

$('.submenuarrow').on('click',function() {
    $(this).prev("ul").slideToggle("slow");
}); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多