简体   繁体   English

jQuery选择器不适用于兄弟姐妹?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM