<li class="page_item"><a href="javascript:">A</a>
<ul class="children">
<li class="page_item"><a href="">1</a></li>
<li class="page_item"><a href="">2</a></li>
</ul>
</li>
<li class="page_item "><a href="">B</a>
<ul class="children">
<li class="page_item"><a href="">1</a></li>
<li class="page_item"><a href="">2</a></li>
<li class="page_item"><a href="">3</a></li>
<li class="page_item"><a href="">4</a></li>
</ul>
</li>
<li class="page_item "><a href="">C</a>
<ul class="children">
<li class="page_item"><a href="">1</a></li>
<li class="page_item"><a href="">2</a></li>
<li class="page_item"><a href="">3</a></li>
<li class="page_item"><a href="">4</a></li>
</ul>
如何更改所有<li class="page_item"><a href="javascript:"></a>
的attr但不更改ul.children。
$('li.page_item a').not("ul.children").attr("href", "http://google.com");
不工作。感谢
答案 0 :(得分:5)
答案 1 :(得分:4)
简而言之:$("ul:not(.children) > li.page_item > a").attr("href","blah");
。 :not
jQuery伪选择器允许您从集合(ul)中过滤掉您不想要的东西(ul.children)。从那里,直接孩子李,直接孩子一个。
希望这有帮助。如果仍然不清楚,请不要犹豫,我会进一步详细说明。
P.S:小提琴 - http://jsfiddle.net/VsL5t/
答案 2 :(得分:2)
$('li.page_item a').not('.children a').attr("href", "http://google.com");
编辑 - 或更具体的过滤(尽管上面填写了答案的要求):
$('li.page_item a').not('ul.children li.page_item a').attr("href", "http://google.com");
答案 3 :(得分:1)
遍历元素并跳过没有.children
的元素。
<强> jsFiddle Demo 强>
$('li.page_item a').each(function(){
if( $('.children',this.parentNode).length == 0 ) return true;
$(this).attr("href","http://www.google.com");
});
答案 4 :(得分:1)
一种选择是使用has
方法。
$('li.page_item')
.has("ul.children")
.children('a')
.prop("href", "http://google.com");
答案 5 :(得分:0)
你的尝试很接近。 not
调用中的选择器将不匹配任何内容,因为集合包含a
元素,并且选择器与ul
元素匹配。将a
添加到选择器:
$('li.page_item a').not("ul.children a").attr("href", "http://google.com");
答案 6 :(得分:-2)
使用直接后代选择器:
$('li.page_item > a').attr("href", "http://google.com");