javascript - Css 从 .data() 中选择空数组

标签 javascript jquery html css

我正在通过 Jquery .data() 将数组保存到按钮中。

如果数组为空,我希望该按钮为红色。

如何通过 CSS 匹配空数组按钮?

var values1 = [];
var values2 = ['not', 'empty'];

$('.button1').data('values', values1);
$('.button2').data('values', values2);
button[data-values='[]'] { // THIS IS WRONG
  color: red;
}
<button class="values1">Hello1</button>
<button class="values2">Hello2</button>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

最佳答案

Jquery 不在属性中存储数据。它使用外部 expando 对象来避免旧浏览器中的内存泄漏和各种序列化/反序列化问题。

如果你想在 DOM 中存储数据,你需要使用 attr 代替。虽然我不认为这是个好主意。考虑重新考虑您的样式设置方法(例如,您可以添加一些语义类)

var values1 = [];
var values2 = ['not', 'empty'];

$('.values1').attr('data-values', JSON.stringify(values1));
$('.values2').attr('data-values', JSON.stringify(values2));
button[data-values='[]'] {
  color: red;
}
<button class="values1">Hello1</button>
<button class="values2">Hello2</button>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

关于javascript - Css 从 .data() 中选择空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53802723/

相关文章:

javascript - 三个 .indexOf 不匹配 - 返回另一个结果

javascript - jQuery 多操作按钮

javascript - Hook Canvas 的 toDataURL

javascript - 如何在 Javascript 中创建 OOP 类

javascript - 上下文菜单选项在哪里定义?

javascript - 有时会出现模式关闭时的空白屏幕

javascript - 从运行在 Web 浏览器控件中的 JavaScript 脚本调用 C++ 函数

javascript - 如何修复覆盖网站标题的灯箱画廊?

html - 从 Html 调用服务

html - 背景图片在 IE7 上不显示