0

ドキュメントの準備ができたら、クラス内のすべてのdivのオブジェクトを作成し、divの属性「id」に基づいてそれらを割り当てようとしています。これが機能しない私のコードです、私は理解できません。

<div class="supercolor" >                       
   <div class="colordiv" id="#111111" style="background-color:#111111;">&nbsp;</div>
   <div class="colordiv" id="#222222" style="background-color:#222222;" >&nbsp;</div>                
   <div class="colordiv" id="#333333" style="background-color:#333333;">&nbsp;</div>
</div>

そして私のスクリプトセクションで。

$(document).ready(function() {

   $('div.supercolor > div').each(function() {
      var color_object = { $(this).attr('id') : false }
   });
});

ありがとうございました

4

2 に答える 2

2
$(function() {

    var divObjects = $("div.supercolor > div").map(function(val) {
        return new DivObject(this.id);
    }).get();

});

function DivObject(id) {
    this.id = id; 
    ...
}

これにより、すべてのが取得さ<div>れ、それらがdivオブジェクトにマップされます。<div>idなどの個人からのデータを渡して、コンストラクターに渡すことができます。

.get()配列を取得するには、を呼び出す必要があります。

[編集]

var testDiv = $.grep(divObjects, function(val) {
    val.id === "test"
})[0];

このコードスニペットはもっと見覚えがあるかもしれませんが

var testDiv;
for (var i = 0, ii = divObjects.length; i < ii; i++) {
    var div = divObjects[i];
    if (div.id === "test") {
        testDiv = div;
        break;
    }
}
于 2011-05-09T11:36:19.107 に答える
1

'DivObjects'の配列を格納する正当な理由がない限り、アプローチを変更することを検討します。

ページの読み込み時に、クリックハンドラーを各カラーdivにアタッチして、divの「選択された」クラスを切り替えます(他のクラスから削除します)。

$("div.supercolor > div").click(function(){
    $(this).toggleClass('selected').siblings('.selected').removeClass('selected');
});

いつでも、選択された色を取得する必要があります(存在する場合)。'selected'クラスでcolordivを選択し、そのidをプルします。

$("div.supercolor > div.selected").attr('id');

これはあなたの状況には適さないかもしれませんが、それは単純で効果的です。

于 2011-05-09T15:13:33.033 に答える