[英]jQuery selectors don't work for siblings?
i have a multilevel menu with anchor-tags in it. 我有一个带有锚标签的多级菜单。 My problem is to get the jQuery selectors to work properly.
我的问题是让jQuery选择器正常工作。
Working code: 工作代码:
$(this)
.closest('li')
.siblings('li.open')
.children('a')
.children('i')
.toggleClass('class1')
.toggleClass('class2');
What it should be: 应该是什么:
$(this)
.closest('li')
.siblings('li.open > a > i')
.toggleClass('class1')
.toggleClass('class2');
But not even this works: 但即使这样也行不通:
$(this)
.closest('li')
.siblings('li.open a i')
.toggleClass('class1')
.toggleClass('class2');
What i want to do in text-form: The onClick event targets an anchor tag. 我想以文本形式做什么:onClick事件以锚标记为目标。 I want the i-Tags in the anchors of the siblings of his parent LI - god that sounds aweful - to toggle two different classes.
我希望i-Tags在他的父母LI的兄弟姐妹的锚点 - 听起来很神的神 - 切换两个不同的类。
HTML HTML
<ul>
<li>
<a><i class="class1"></i>Label</a>
<ul>
<li>
<a><i class="class1"></i>Label</a>
</li>
<li>
<a><i class="class1"></i>Label</a>
</li>
<li>
<a><i class="class1"></i>Label</a>
</li>
<li>
<a><i class="class1"></i>Label</a>
</li>
<li>
<a><i class="class1"></i>Label</a>
</li>
<li>
<a><i class="class1"></i>Label</a>
</li>
<li>
<a><i class="class1"></i>Label</a>
</li>
</ul>
</li>
<li class="open">
<a><i class="class1"></i>Label</a>
<ul>
<li>
<a><i class="class1"></i>Label</a>
</li>
<li>
<a><i class="class1"></i>Label</a>
</li>
<li>
<a><i class="class1"></i>Label</a>
</li>
<li>
<a><i class="class1"></i>Label</a>
</li>
<li>
<a><i class="class1"></i>Label</a>
</li>
<li>
<a><i class="class1"></i>Label</a>
</li>
<li>
<a><i class="class1"></i>Label</a>
</li>
</ul>
</li>
<li>
<a><i class="class1"></i>Label</a>
</li>
<li>
<a><i class="class1"></i>Label</a>
</li>
<li>
<a><i class="class1"></i>Label</a>
</li>
<li>
<a><i class="class1"></i>Label</a>
</li>
<li>
<a><i class="class1"></i>Label</a>
</li>
</ul>
I think the reason it won't work is because 我认为它不起作用的原因是因为
('li.open > a > i')
is not a sibling of 不是兄弟姐妹
$(this).closest('li')
The sibling of the li is another li. 李的兄弟是另一个李。
You could try 你可以试试
$(this).closest('li').sibling('li.open').find('a > i').toggleClass('blah');
Why can't you use the first piece of code you posted? 为什么你不能使用你发布的第一段代码?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.