data- *每个类的值

时间:2014-03-28 21:16:04

标签: javascript jquery html css

我有2个div

<div class='class' data-color='gray'>
</div>

<div class='class' data-color='red'>
</div>

正如您所看到的,两个data-color都有不同的值。第一个是gray,第二个是red

这是我在JavaScript(jQuery)中使用它所做的:

$(".class").each(function(){
    var DivDataColor = $(".class").data("color");
    $(this).css({'background': DivDataColor});
});

这使得它们都具有灰色,我认为正在发生的是它只是采用第一个div的数据类型然后将其应用于两者。

因此,对于trys,我将变量放在.each()函数

之外
var DivDataColor = $(".class").data("color");
$(".class").each(function(){
    $(this).css({'background': DivDataColor});
});

但我仍然没有运气,可能是什么工作?

5 个答案:

答案 0 :(得分:6)

$(".class").each(function(){
    var DivDataColor = $(".class").data("color");
    //                 ^^^^^^^^^^^
    $(this).css({'background': DivDataColor});
});

在这里,您重新选择所有匹配的元素。然后,因为只能有一个"data-color"值,是的,第一个被使用。

使用$(this),如下所示:

$(".class").each(function() {
    var $this = $(this);
    var DivDataColor = $this.data("color");
    $this.css({'background': DivDataColor});
});

或者,最好的是,通过采用相反的方法将操作合并为一个:

$(".class").css("background", function() {
    return $(this).data("color");
});

答案 1 :(得分:3)

this调用中使用.each()对象访问data-color调用中引用对象的.each()属性

$(".class").each(function(){
        var DivDataColor = $(this).data("color");
        $(this).css({'background': DivDataColor});
});

答案 2 :(得分:3)

反之,在回调中返回数据属性以设置样式

$(".class").css('background', function() {
    return $(this).data('color');
});

答案 3 :(得分:1)

$(".class").each(function(){
    var DivDataColor = $(this).data("color"); 
    $(this).css({'background': DivDataColor});
});

用这个

替换'.class'

答案 4 :(得分:0)

你的第一个例子似乎只是一个小编辑:

DivDataColor变量保留在“每个”循环中,但不要重新选择.class类,而是使用变量"this"

$(this).data("color")

这是一个有效的jsbin示例:(http://jsbin.com/yuvetepo/1/edit)。