17

jQuery で #id > #id を選択できますか?

私はこの構造を持っています

<div id="slide1">
    <div id="slide_body">
    some content
    </div>
</div>

<div id="slide2">
    <div id="slide_body">
    some content
    </div>
</div>

jqueryを使用して、#slide1内の#slide_bodyのみを選択する方法はありますか?

または、次のように各ボディ div に id を追加する唯一の解決策です

<div id="slide2">
    <div id="slide_2_slide_body">
    some content
    </div>
</div>
4

9 に答える 9

13

最初の質問への答え:

jQuery で #id > #id を選択できますか?

実際、その正確な構文を実行できます$('#slide1 > #slidebody')。文字は直接の子孫を意味し、子セレクター ( http://api.jquery.com/child-selector/> )と呼ばれます。要素が直接の子孫ではなく、他の何かの中にネストされている可能性がある場合は、 を省略して.>$('#slide1 #slidebody')

HTML スニペットに関しては、異なる要素に同じ ID を使用するのは良くないことであり、無効なドキュメントと見なされるという点で、ほとんどの人が正しいと述べています。

http://jsfiddle.net/infiniteloops/LzFAr/

于 2013-01-23T10:58:24.677 に答える
11

1 つのドキュメントで一意の ID を使用することはできません

この属性は、要素に名前を割り当てます。この名前はドキュメント内で一意である必要があります。

http://www.w3.org/TR/html401/struct/global.html#h-7.5.2

あなたの例では、クラス「slide_body」を使用できます

<div id="slide1">
    <div class="slide_body">
    some content
    </div>
</div>

#slide1 .slide_bodyそして、またはで選択できます$("#slide1").find('.slide_body')

于 2013-01-23T10:51:15.740 に答える
6

使用する

$('#slide1 > #slide_body')
于 2013-01-23T11:04:55.863 に答える
3

マークアップが無効です。同じ ID を持つ 2 つの要素を持つことはできません。このため、答えはノーです。代わりにクラスを使用してください。

<div id="slide1">
    <div class="slide_body">
    some content
    </div>
</div>

<div id="slide2">
    <div class="slide_body">
    some content
    </div>
</div>

$('#slide2>.slide_body');
于 2013-01-23T10:52:05.410 に答える
0

ID はページ上で一意である必要があります。代わりにクラスを使用します。

<div id="slide1">
    <div class="slide_body">
        some content
    </div>
</div>

そして#slide1 .slide_body、セレクターとして。

于 2013-01-23T10:51:52.743 に答える
0

HTML 要素の ID は一意である必要があります。スライド本体をクラスに変換します。

HTML

<div id="slide1">
    <div class="slide_body">
    some content
    </div>
</div>

<div id="slide2">
    <div class="slide_body">
    some content
    </div>
</div>

セレクタ

$("#slide1 .slide_body")
于 2013-01-23T10:52:01.050 に答える
0

idそのように選択できますが、属性はページ内で一意でなければならないため、完全に冗長です。それを念頭に置いて、現在のコードは無効です。class識別子をグループ化する必要がある場合は、を使用する必要があります。

<div id="slide1">
    <div class="slide_body">
        some content
    </div>
</div>

<div id="slide2">
    <div class="slide_body">
        some content
    </div>
</div>

次に、次を使用します。

var $slideContent = $('#slide1 .slide_body');
于 2013-01-23T10:52:19.587 に答える
0

まず第一に、一意でない ID を持つことはあまり良い決定ではありません。これにもかかわらず、jQuery 関数でコンテキストを渡すことができます。

$("#slide_body", "#slide1")

于 2013-01-23T10:53:06.500 に答える