-1

初め:

  .closest('.notice')

.notice 自体を取るか、それとも dom ツリーの .notice に最も近いものを取るか?

.next('.notice')- それは dom ツリーの下にあるものをつかみますよね?

別のもの:

$('#celebTree ul').hide().before('<div class="bla"></div>').prev().addClass('handle closed')

.prev jQuery を使用すると、「bla」の前の要素を選択してクラスを適用する必要があります。しかし、.before メソッドで挿入している要素にクラスを適用しています。なぜこのようになっているのですか?

4

2 に答える 2

0

.closest('notice')一致する最も近い親、または一致する場合は要素自体です。

<div class="notice"> //This will be selected with $("#target").closest(".notice")
    <div id="target"></div>
</div>

<div class="notice">
    <div id="target" class="notice"></div>  //This will be selected with $("#target").closest(".notice")
</div>

.next('notice')一致する場合、次の要素の兄弟を選択します。

<div id="target"></div>
<div class="notice"></div> //This will be selected with $("#target").next(".notice")

<div id="target"></div>  //NOTHING will be selected with $("#target").next(".notice")
<div></div>

.before()新しい jQuery オブジェクトを返すのではなく、前にコンテンツを挿入した古いものを返します。

$('#celebTree ul').hide().before('<div class="bla"></div>') 
//Returns the '#celebTree ul'. NOT jQuery object wrapping '<div class="bla"></div>'

要素の前に挿入してここでprev操作するため、そのコンテンツである前の要素の兄弟を取得します。'#celebTree ul'prev

于 2012-07-20T07:17:39.990 に答える
0
.closest('.notice')

.closest()DOM ツリーを (上方向に) トラバースし、セレクターに一致する最初の祖先を返します。

.next('.notice')

.next()セレクターに一致する場合、直後の兄弟を返します。

$('#celebTree ul').hide().before('<div class="bla"></div>').prev().addClass('handle closed')

.before()これにより、クラスが呼び出されたのと同じ jQuery オブジェクトが返されるため、挿入する要素にクラスが適用されます(挿入された要素は、一致したセットに追加されません)。一致した要素の直前に挿入されているため.prev()、新しい要素が返されます。

于 2012-07-20T07:16:28.427 に答える