9

jQuery セレクターに問題があります。

(...)未定義の数の html タグを表す次の html があるとします。

(...)
<div class="container">
  (...)
    <div class="subContainer">
      (...)
        <div class="container">
          (...)
            <div class="subContainer"/>
          (...)
        </div>
       (...)
     </div>
   (...)
</div>
(...)

container最初のdiv(クラスコンテナを含む)を指すjavascript変数があるとしましょう。ネストされたサブコンテナではなく、最初のサブコンテナを選択する jquery が必要です。使えば$(".subContainer", container);両方手に入る。

使ってみました

$(".subContainer:not(.container .subContainer)", container);

しかし、これは空のセットを返します。解決策はありますか?

ありがとう。

4

4 に答える 4

8

Jqueryに基づく:同じクラス名を持つ要素の子孫ではないクラスのすべての要素を取得しますか? 次のソリューションを開発しました。ありがとうございます。

$.fn.findButNotNested = function(selector, notInSelector) {
    var origElement = $(this);
    return origElement.find(selector).filter(function() {
        return origElement[0] == $(this).closest(notInSelector)[0];
    });
};
于 2012-12-28T16:31:45.123 に答える
8

direct childセレクターを使用できます:

$("> .subContainer", container);

containerトップレベルの要素を参照する jQuery オブジェクトの場合は、次のメソッド.containerも使用できます。children

container.children('.subContainer');

またはfindfirstメソッド:

container.find('.subContainer').first();
于 2012-12-28T15:53:52.730 に答える
0

使用できる最初のサブコンテナを取得するには

$('.subContainer')[0]
于 2012-12-28T15:56:44.040 に答える
0

これは私自身の用途に適しているようです...

$('.item').filter(function() { return $(this).parents('.item').length == 0; });

#outerこれはdivのみを返します。

<div class="item" id="outer">
    <div class="item" id="inner"></div>
</div>
于 2015-02-27T04:56:03.690 に答える