javascript - data-* 每个类的值

标签 javascript jquery html css

我有2个div

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

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

如您所见,data-color 都有不同的值。第一个是灰色,第二个是红色

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

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

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

所以为了尝试,我将变量放在 .each() 函数之外

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

但我仍然没有运气,有什么解决办法?

最佳答案

$(".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");
});

关于javascript - data-* 每个类的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22723344/

相关文章:

jquery - 具有可变高度的 CSS3 过渡?

javascript - 初始 handsontable View 不会拉伸(stretch)到正确的宽度

javascript - HTML javascript 电影和晚餐

html - 无法将导航栏品牌图像位置更改为在导航栏中垂直居中

javascript - 该 Node/es6 代码的输出是什么?为什么?

javascript - 如何用 Javascript 模拟慢速连接?

javascript - Nativescript ListView [object 对象]

javascript - enzyme 测试同一组件内的多种渲染方法

javascript - 如何禁用 dijit 日期选择器?

用于 asp.net 的 HTML 压缩器