<ul id="nav">
<li><a href="#">Home</a></li>
<li><a href="#">Discography</a>
<ul>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
</ul>
</li>
<li><a href="#">Videography</a>
<ul>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
</ul>
</li>
<li><a href="#">About</a></li>
</ul>
我想获取jquery选择器中具有子菜单的主链接。我不想抓住子菜单链接。我只想要有子菜单的主要链接。
我尝试了下面的选择器,但它给了我所有的主要链接(主页,唱片,录像,关于)。
$("#nav > li > a").click(function() {
alert("click called");
});
相反,我只希望它在用户点击唱片和视频摄像时发出警告。
答案 0 :(得分:6)
<强> jsFiddle demo 强>
$("#nav li:has(ul) > a").click(function() {
alert("click called");
});
P.S:上述内容甚至适用于更深层次的嵌套列表!
答案 1 :(得分:3)
DEMO只需使用.has(&#39; ul&#39;)。长度......就像那样
$("#nav li a").click(function() {
if($(this).parent().has('ul').length){
alert("this has submenu");
}
});
答案 2 :(得分:1)
您需要查找是否存在任何ul元素......
$("#nav li").click(function() {
var subs = $('ul')
if($(this).find(subs).length !== 0){
alert("Click called");
}
});
检查fiddle
修改强>
“li”及其所有子项在上面的代码中被选中,以下是如何修复
$("#nav li a").click(function() {
var subs = $('ul')
if($(this).parent().find(subs).length!==0){
alert("Click called");
}
});
已编辑Fiddle
答案 3 :(得分:0)
你也可以这样:
$( '#nav li a' ).click(function() {
var submenu = $( this ).find( 'ul' ).length;
if( submenu > 0 )
{
// Your Code Here
}
});