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');
});

在任何时候,您都需要获取已选择的颜色(如果有)选择具有“已选择”类的颜色 div,并拉取它的 id:

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

这可能不适合您的情况,但它简单有效。

于 2011-05-09T15:13:33.033 回答