if($('.navigation ul li ul').children().length === 1) {
$('.navigation ul li ul li a').css({opacity:0.5});
}
else {
$('.navigation ul li ul li:first-child a').addClass('first');
$('.navigation ul li ul li:last-child a').addClass('last');
}
基本上我想要它,所以如果导航有一个<li>
,那么除了在无序列表中有超过1 <li>
之外,它还可以做其他事情。
示例HTML:
<nav id="nav" class="navigation"><!--Start Navigation-->
<ul>
<li><a href="#">Sample Linkk</a>
<ul>
<li><a href="#">1 DropDown Item</a></li>
</ul>
</li>
<li><a href="#">Sample Link 2</a>
<ul>
<li><a href="#">2 DropDown Items</a></li>
<li><a href="#">2 DropDown Items</a></li>
</ul>
</li>
</ul>
</nav>
答案 0 :(得分:4)
$('.navigation ul li ul').each(function(){
if($(this).children().length === 1){
$(this).find('a').css({opacity:0.5});
}else{
$('li:first a', $(this)).addClass('first');
$('li:last a', $(this)).addClass('last');
}
});
没有测试过,但我认为它会起作用
答案 1 :(得分:4)
如果您在代码中放置以下警告,则会显示其找到三个孩子
alert($('.navigation ul li ul').children().length)
并且,基于您指定的选择器是正确的。您基本上要求jQuery查找符合该条件的所有节点,并且有两个节点符合该条件(总共有三个子节点)
每个函数都可以解决这个问题,因为对于每个“.navigation ul li ul”,它会查看它的子节点,此时你可以完全控制看看有多少个孩子并完成剩下的工作。
$('.navigation ul li ul').each(function(){
if($(this).children().length === 1){
$(this).find('a').css({opacity:0.5});
}else{
$('li:first a', $(this)).addClass('first');
$('li:last a', $(this)).addClass('last');
}
});
答案 2 :(得分:1)
你现在说导航的ul是一个带有ul的li,只有1个孩子,而不是你想要的下面的内容。另外我认为==就够了..
逻辑上不起作用:
你说的是:
如果至少有一个$('.navigation ul li ul')
只有1个孩子,那么对于所有$('.navigation ul li ul li a')
个元素(因此不仅是属于if条件中的匹配的元素)执行不透明度的事情。< / p>
在应用操作之前,您必须先分离元素。
答案 3 :(得分:1)
你错过了.each
吗?
$('.navigation ul li ul').each(function(){
if ($(this).children().length == 1) {
// do A
} else {
// do B
}
});
答案 4 :(得分:0)
看看当你做这样的事情时会发生什么:
console.log( $("#nav ul li ul").children() );
你将所有的li集中到一个jQuery对象中。这不是你想要的我想不到的。
尝试this
之类的内容答案 5 :(得分:0)
你需要迭代你可能的匹配,否则你应用一次。
$('.navigation ul li').each(function(){
if($(this).children('ul').children('li').length === 1) {
$(this).children('ul').children('li').children('a').css({opacity:0.5});
}
else {
$(this).children('ul').children('li:first-child').children('a').addClass('first');
$(this).children('ul').children('li:last-child').children(
'a').addClass('last');
}
});
是的,它很乱,但我今天感觉不舒服