您好我正在尝试定位.current-cat-parent下的第一个<a>
元素,但我的jquery代码正在影响其下的所有<a>
元素。我怎样才能定位第一个直接<a>
元素?谢谢!
$(".current-cat-parent a:first-child").click(function(e){
e.preventDefault();
if( $(this).hasClass('hide') ){
$(this).next().slideDown(800);
$(this).removeClass('hide');
} else {
$(this).next().slideUp(800);
$(this).addClass('hide');
}
});
<li class="cat-item cat-item-1 current-cat-parent">
<a title="View all posts filed under Clothing" href="http://site.com/category/clothing">Clothing</a>
<ul class="children">
<li class="cat-item cat-item-3"><a title="View all posts filed under Jeans" href="http://site.com/category/clothing/jeans">Jeans</a></li>
<li class="cat-item cat-item-2 current-cat"><a title="View all posts filed under Suits" href="http://site.com/category/clothing/suits">Suits</a></li>
</ul>
</li>
答案 0 :(得分:2)
您可以使用eq()定位第一个孩子。
$(".current-cat-parent a:eq(0)")
答案 1 :(得分:2)
而不是:
$(".current-cat-parent a:first-child")
使用直接子>
:
$(".current-cat-parent > a:first-child")
我认为您的主要问题是.hide
css类。你为什么需要它?我建议你把它变成一个空白的css类或删除它。
答案 2 :(得分:1)
应该是
$(".current-cat-parent a:eq(0)").click(function(e){
答案 3 :(得分:1)
如果仔细查看HTML标记,您会注意到所有a
元素也是其各自父母的first-child
。解决方案是使用以下选择器之一:
.current-cat-parent > a
.current-cat-parent a:first
.current-cat-parent a:eq(0)
请注意,:first
和:first-child
不一样。