10

クラス X に一致し、クラス X を持つ兄弟を持たない要素のみを選択したいと考えていますX = hasDatepicker。これが私が思いついたものです:

$('.hasDatepicker:not(.hasDatepicker ~ .hasDatepicker)')

ただし、これは最初の要素を除外するわけではないため、日付ピッカーのどのグループでも最初の要素が選択されます。グループには含めたくありません。シングルだけです。

1件の一致の例:

<div class="input text">
<input name="data[Goal][date_started]" type="text" value="" class="hasDatepicker" style="display: none; ">
<button type="button" class="ui-datepicker-trigger"><img src="/themed/mocha/images/btn_calendar.png" alt="..." title="..."></button>
</div>

一致が0件の例:

<div class="input text">
<input type="text" value="" id="GoalDateStarted" class="hasDatepicker"><input type="text" value="" class="hasDatepicker" style="display: none; ">
<input type="text" value="" class="hasDatepicker" style="display: none; ">
<input name="data[Goal][date_started]" type="text" value="" class="hasDatepicker" style="display: none; ">
<button type="button" class="ui-datepicker-trigger"><img src="/themed/mocha/images/btn_calendar.png" alt="..." title="..."></button>
</div>

何か案は?ありがとう!

4

1 に答える 1

8

それほどエレガントではありませんが、:first-child疑似セレクターを使用し、結果セットを.filter()でフィルタリングするというトリックを実行します。

  • :first-child可能性のある複数の兄弟リストの最初の .test 要素のみを選択するのに役立ちます

  • .filter()同じクラスの兄弟がいないかどうかを実際に確認するために使用します

コードは次のとおりです。

var a = $('.test:first-child').filter(function() {
    //return $(this).parent().find('.test').not(this).length == 0;
    return !$(this).siblings('.test').length
});

デモ

于 2012-04-13T18:29:17.877 に答える