1
<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>但没有 ul.children 的 attr。

$('li.page_item a').not("ul.children").attr("href", "http://google.com");

不工作。谢谢

4

7 回答 7

5

设置顶级ulparent,然后:

$('ul.parent > li.page_item > a').attr("href", "http://google.com");

在这里演示

于 2013-03-27T23:03:09.603 回答
4

简而言之:$("ul:not(.children) > li.page_item > a").attr("href","blah");。jQuery 伪选择器:not允许您从集合 (ul) 中过滤掉不需要的东西 (ul.children)。从那里,直子li,直子a。

希望这有帮助。如果仍然不清楚,请随时发表评论,我会进一步详细说明。

PS:小提琴 - http://jsfiddle.net/VsL5t/

于 2013-03-27T23:04:04.520 回答
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");
于 2013-03-27T23:07:10.627 回答
1

遍历元素并跳过没有.children.

jsFiddle 演示

$('li.page_item a').each(function(){
 if( $('.children',this.parentNode).length == 0 ) return true;
 $(this).attr("href","http://www.google.com");
});
于 2013-03-27T23:03:15.723 回答
1

一种选择是使用has方法。

$('li.page_item')
         .has("ul.children")
         .children('a')
         .prop("href", "http://google.com");
于 2013-03-27T23:04:46.527 回答
0

你的尝试很接近。调用中的选择器not将不匹配任何内容,因为集合包含a元素,并且选择器匹配ul元素。添加a到选择器:

$('li.page_item a').not("ul.children a").attr("href", "http://google.com");
于 2013-03-27T23:05:48.157 回答
-2

使用直接后代选择器:

$('li.page_item > a').attr("href", "http://google.com");
于 2013-03-27T23:02:05.743 回答