匹配未知的自定义数据属性?

时间:2012-07-29 10:03:25

标签: html css html5 css3 css-selectors

有没有办法匹配具有未知自定义数据属性的元素? 未知我的意思是元素可能如下所示:

<div data-unknown="foo"></div>

<td data-someOtherCustomDataAttribute="bar"></td>

我希望匹配所有具有data- *属性的元素。也就是说, div td 标签都应匹配。 我知道如何匹配值,但不知道属性本身。

任何线索?

4 个答案:

答案 0 :(得分:1)

CSS本身没有这方面的工具。

只有一种方法可以通过属性选择元素:selector[attribute]。并且无法定义属性外观的某些模式(例如regexp或类似的东西),因此您可能只设置属性名称。

答案 1 :(得分:1)

有一类特殊的选择器。它们被称为“attribute selectors” 在previous answer中提出了类似的解决方案,但它需要一个值,而我的 - 不会:)

它应该是这样的:

[data-unknown]{
    color: red;
}

基本上 - 您重复整个属性,无论是data-unknown还是data-anything_you_want

可以在此处看到它的实例:http://jsfiddle.net/skip405/2vhBj/

答案 2 :(得分:0)

你可以这样做:

div[attribute=value]
{
    /*css here...*/
}

选择器中没有空格非常重要。

尚未测试它是否适用于未知属性。它应该这样做,因为css也可以设置XML样式。

答案 3 :(得分:-1)

如果您正在使用HTML5的数据属性,并且您的浏览器支持HTML5 JavaScript的dataset元素属性,则可以动态选择(我使用jQuery缩短示例):

$('.contains-data').each( function() {
    $(this).dataset().each( function (key, value) {
        if (value != '') { // put your "selector" criteria here
             alert(key + ': ' + value);
        }
    }
});

你可以在没有jQuery的情况下完成同样的工作,最初选择所有具有“contains-data”类的页面元素。

此策略确实需要使用JavaScript,因此YMMV。

有关详细信息,请参阅HTML5 Custom Data Attributes (data-*): Using data- attributes with JavaScript