簡體   English   中英

選擇除jQuery中的父項以外的所有項

[英]Select All except Parents in Jquery

我有以下代碼:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <script type="text/javascript">
        $("#ThisClick").anycommand();
    </script>
</head>
<body>
<ul id="TopUl">
    <li>First<ul>
        <li>One<ul>
            <li>liA1</li>
            <li>liA2</li>
        </ul>
        </li>
        <li>Two<ul>
            <li id="ThisClick">liB1</li>
            <li>liB2</li>
        </ul>
        </li>
    </ul>
    </li>
    <li>Second<ul>
        <li>li1<ul>
            <li>liF1</li>
            <li>liF2</li>
        </ul>
        </li>
        <li>li2</li>
    </ul>
    </li>
</ul>
</body>
</html>

單擊時,我需要折疊不是liB1(#ThisClick)父母的所有UL。 換句話說,通過單擊liB1,我想要以下代碼:

<ul id="TopUl">
    <li>First<ul>
        <li>One<ul style="display:none">
            <li>liA1</li>
            <li>liA2</li>
        </ul>
        </li>
        <li>Two<ul>
            <li id="ThisClick">liB1</li>
            <li>liB2</li>
        </ul>
        </li>
    </ul>
    </li>
    <li>Second<ul style="display:none">
        <li>li1<ul style="display:none">
            <li>liF1</li>
            <li>liF2</li>
        </ul>
        </li>
        <li>li2</li>
    </ul>
    </li>
</ul>

然后,jQuery可能折疊所有未父代的UL標簽。 解決辦法是什么? 我該怎么辦?

這個看起來不錯的選擇器應該可以工作:

$("ul :not(:has(#ThisClick))").hide();

參考:: :not():has()


因此,這段代碼將隱藏所有不是您單擊的元素的父元素。 根據需要更改第一個選擇器( $("#ThisClick") ),現在它只能在您指定了ThisClick ID的<li>上使用,並且只能使用一次ID。

$("#ThisClick").click(function() {
    $("ul :not(:has(this))").hide();
});

如果要對所有這些工作<li> S中的在<ul>你可以這樣做:

$("#TopUl li").click(function() {
    $("ul :not(:has(this))").hide();
});

這會將click事件添加到列表中的所有<li>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM