2

ここで :not(:first-child) セレクターを使用できるはずですが、期待どおりに機能していないようです。

http://jsfiddle.net/39KZ9/6/

ラベルを引き続き表示したいと思います。どうすればそれを簡単に達成できますか?

<div id="OrdersSearchResult">
    <input type="radio" id="SearchResultsLink" name="SearchResultNavigation" checked="checked"/>
    <label id="SearchResultsLinkLabel" for="SearchResultsLink">Search Results</label>
</div>​

$(document).ready(function(){
    $('#OrdersSearchResult').children('label:not(:first-child)').remove();
    $('#OrdersSearchResult').children('input:not(:first-child)').remove();
});​

更新:明確にするために、最初の子セレクターが既に一致した要素の最初の子を探すことを期待していました。つまり、最初に見つかった入力ではないすべての入力を選択し、同様にラベルを選択したいと考えています。残念ながら、適用される他のフィルターに関係なく、OrdersSearchResult の子の最初の子要素に一致します。

4

4 に答える 4

2

ラベルと入力に対して、これを行います。

var labels = $('#OrdersSearchResult > label').toArray();
labels.shift();
$(labels).remove();

または多分:

$($('#OrdersSearchResult > label').toArray().shift()).remove();
于 2012-09-27T23:13:25.943 に答える
2

http://jsfiddle.net/39KZ9/16/

$(document).ready(function(){
    $('#OrdersSearchResult').children('label:gt(0)').remove();
    $('#OrdersSearchResult').children('input:gt(0)').remove();
});​

大なりセレクターを使用します。

:gt(0)のインデックスが最初であるため、基本的に最初よりも大きいアイテムを意味します0

http://api.jquery.com/gt-selector/

ちなみに、:first-child要素のグループの最初ではなく、親要素の最初の子を返します。

さらに簡単:

$(document).ready(function(){
    $('#OrdersSearchResult').children('label:gt(0),input:gt(0)').remove();
});​
于 2012-09-27T23:15:44.783 に答える
1

したがって、フィドルにすでに含まれている最初の子ではない要素であるラベルを削除しました。

入力とそのラベルの両方を含む最初以外のフィールドグループを削除したいとします。その場合は、 http://jsfiddle.net/39KZ9/8/をチェックしてください。

于 2012-09-27T23:07:02.277 に答える
1

セレクター :first-child を使用すると、特定のノードの最初の子を選択できます。

コードでは、最初の子が最初の入力です。他のすべてのノードは最初の子ではないため、jQuery 呼び出しによって削除されます。

問題を解決するには、コンテナ内の入力とラベルの各ペアをグループ化し、(<p>, <div>, ...)これらのコンテナに jQuery 呼び出しを適用する必要があります。

于 2012-09-27T23:14:11.410 に答える