0

jQuery関数によって生成された、ほとんど制御できない世代のdiv構造があります。この構造には、19人の第1世代の子供、1人の第2世代の子​​供、および3人の第3世代の子供がいます。私は第4世代の子供には興味がありません。コードは次のとおりです。

<div id="columntableordersGrid">
<div></div>
<div></div>
....
<div></div>
<div id="30bcef39-6ab1-69f5-81af-bbb9e870bfd4">
    <div>
        <div id="pdfs"><img src="/kabinet/images/32x32/pdf.png"></div>
        <div class="container">
            <div class="filtericon">
                <div class="filterbutton"></div>
            </div>
            <div class="sortasc">
                <div class="sortascbutton"></div>
            </div>
            <div class="sortdesc" >
                <div class="sortdescbutton"></div>
            </div>
        </div>
        <div id="bb29c057-acd8-f1eb-aa13-69d8498ae47e">
            <div class="column-menubutton"></div>
        </div>
    </div>
</div>
</div>

この構造の第3世代の子の1つのIDを取得する必要があります(bb29c057-acd8-f1eb-aa13-69d8498ae47e)。スクリプトが実行されるたびに、新しいIDが生成されます。

次を使用して、第1世代の子のIDを取得できます。

    var all = $("#columntableordersGrid > div").map(function() {
        return this.id;
    }).get();

私は子供17に興味があるので、all[16]は私にその子のIDを与えます。

上記のコード例の30bcef39-6ab1-69f5-81af-bbb9e870bfd4。

残念ながら、第2世代のdivにはクラスやIDがありません。前述したように、私はその世代を制御できません。このdivの3番目の子は、IDが必要な子です。

助けていただければ幸いです。

4

2 に答える 2

1

必要なIDが常にクラス「.column-menubutton」を持つ要素の親である場合、以下は既存のコードを使用して機能するはずです。

var parentDivId = all[16];
var menuParentDivId = $('#' + parentDivId + " .column-menubutton").parent().attr('id');

デモを見る

于 2012-08-03T10:41:44.403 に答える
0

このような単純なセレクターを使用して、17番目のdivを取得し(インデックスは0から始まるため、16は17番目のdivを取得します)、そのdiv内で最初に見つかったdivのIDを取得できます。

$('#columntableordersGrid div:eq(16) div:first').attr('id');

関心のあるdivが常に最後のdivである場合(上記の例からのように見えます)、次のようにして少し単純化できます。

$('#columntableordersGrid div:last div:first').attr('id');
于 2012-08-03T10:29:18.073 に答える