0

ここに私のHTMLがあります:

<fieldset>
    <legend>Ways I can be contacted</legend>
    <div class="error-message-list"></div>
    <div class="rows">
        <div class="row">
            <div>content</div>
            <div>content</div>                
        </div>
        <div class="row">
            <div>content</div>
            <div>content</div>                
        </div>
    </div>
</fieldset>
<p><a id="count" href="#">Couynt</a></p>

..そしてここに私のJqueryがあります:

    <script type="text/javascript">
        $(document).on({
            click: function(event) { 
                event.preventDefault();
                console.log($(this).parents().siblings('fieldset .rows div.row').length);
            }
        },'#count');
    </script>

「カウント」をクリックすると、コンソールにゼロが書き込まれます。rowdiv内にのクラスを持つ 2 つの div があるため、これは 2 であると予想されますrows

フィールドセットでそれを行うと、つまり次のようになります。

console.log($(this).parents().siblings('fieldset').length);

次に、期待どおりに 1 を返します。

私も試してみました

console.log($(this).parents().siblings('fieldset .rows .row').length);

console.log($(this).parents().siblings('fieldset > div.rows > div.row').length);

..その他多くの組み合わせがありますが、「2」とは言えません!

4

3 に答える 3

3

あなたは働き方を誤解しています.siblings

.siblings('fieldset .rows div.row')

セレクターに一致するすべての兄弟、つまりdiv、クラスを持つ s であり、 and要素rowの子孫である要素を選択します。.rowsfieldset

p要素の唯一の兄弟はfieldset要素ですが、これは確かに ではありませんdiv

、を使用して、兄弟.findの要素を選択できます。例えば:fieldset

$(this).parent().siblings('fieldset').find('.rows div.row').length

必要な情報を取得するために DOM をトラバース/選択する方法はたくさんあります。例えば:

$(this).closest('p').prev('fieldset').find('div.row').length
于 2013-06-27T10:10:36.030 に答える
1

このように試すことができます

デモ--> http://jsfiddle.net/EHYyk/

$(document).on({
            click: function(event) { 
               event.preventDefault();
                console.log($('fieldset .rows .row').length);
            }
        },'#count');

siblings().row隣接する要素が表示されるため、クラスに直接トラバースできます。

于 2013-06-27T10:11:10.143 に答える
0

コードを減らしてみてください。http://jsfiddle.net/2PpGN/

var c = $(".rows").children(".row").length;
alert(c)
于 2013-06-27T10:19:40.833 に答える