0

parentclassを持つ直接の子 div 要素を持つ、 class を持つli 要素のすべてのインスタンスを非表示にしたいと考えていますchild-1hideParent()メソッドが選択した要素の親を非表示にする疑似コードの例を次に示します。

$("li.parent > div.child-1").hideParent();

以下は私の HTML の例で、2 番目と 3 番目li.parentの要素を非表示にする必要があります。

<li class="parent">
    <div class="child-0"> ... </div>
</li>
<li class="parent">
    <div class="child-1"> ... </div>
</li>
<li class="parent">
    <div class="child-1"> ... </div>
</li>
4

3 に答える 3

1

別のオプションは、次を使用することfilterです。

$("li").filter(function () {
    var $this = $(this);
    var isParent = $this.hasClass("parent");
    var childMatchCount = $this.children("div").filter(".child-1").length;
    return isParent && childMatchCount;
}).hide();

デモ: http://jsfiddle.net/GEhfP/

これはいくつかの方法で最適化できますが。しかし、私にとっては、非常に明確な意味で、より「読みやすい」ものです。jsperf を使用すると、filter作業に取り掛かることができる最速の方法は次のとおりです。

$("li.parent").filter(function () {
    return $(this).children("div.child-1").length;
}).hide();

@Joeの答えは最速でした:$("li.parent > div.child-1").parent()

于 2013-04-22T17:41:56.827 に答える