4

これはjsfiddle http://jsfiddle.net/KGDyR/のコードです

(各)div内の(各)pにクラスを追加する必要があります

p が div タグの最初の子の場合、class .first を追加します

.notfirst を追加しない場合

したがって、出力は次のようになります

<div>
    <p class="first">p is first</p>
    <img src="http://projectfoo.com/images/foo_logo.gif" />
</div>

<div>
    <img src="http://projectfoo.com/images/foo_logo.gif" />
    <p class="notfirst">p is not first</p>
</div>
4

4 に答える 4

5

最初の子を使用

$("div p:first-child").addClass('first')

ではありません

$("div p:not(:first-child)").addClass('notfirst')

デモ:フィドル

于 2013-06-19T16:29:37.050 に答える
5

簡単にするために、次のことをお勧めします。

$('p').addClass(function(){
    return this.previousElementSibling === null ? 'first' : 'notfirst';
});

JS フィドルのデモ

または、サポートしていないブラウザで作業するにはpreviousElementSibling:

$('p').addClass(function(){
    return !$(this).prev().length ? 'first' : 'notfirst';
});

JS フィドルのデモ

参考文献:

于 2013-06-19T16:34:59.347 に答える
0

firstスタイル設定にandクラスのみを使用している場合は、andnotfirstを介して純粋に CSS でこれらの要素をターゲットにすることができます(つまり、前の兄弟を持ち、したがって最初の子ではない要素)。p:first-child* + pp

他の理由 (別のスクリプト?) でクラスを追加する場合は、Javascript が必要になります ( Davis Thomas の回答によると)。ただし、クラスを追加する時点で、これらの要素を Javascript で取得する必要があるため、その時点でやりたいことを何でもしてみませんか? ほとんどの場合 (絶対にすべてというわけではありませんが、ほとんどの場合)、問題の要素を既に取得する必要があるため、Javascript を使用して Javascript フックとして機能するクラスを追加する必要はありません。

つまり、スタイリングにクラスを使用している場合、Javascript は必要ありません。それらを Javascript フックとして使用している場合、おそらくそれらのクラスは必要ありません。

于 2016-11-04T12:37:23.757 に答える
0

反対に。

$('div').each(function(index, obj) {
    var c = $(this).is(':first-child') ? 'first' : 'notfirst';
    $(this).find('p').addClass(c);
})
于 2013-06-19T16:36:20.557 に答える