2012-07-18 47 views
1

可能重复:
Can I fetch the value of a non-standard CSS property via Javascript?用一个虚构的CSS属性检索要素

如何使用jQuery来检索与虚构的或非标准的CSS属性的所有元素?例如,如果属性是“情绪”并且其值为“开心”,那么我如何遍历该dom并检索具有该属性的元素,并且如果有必要,它是值?

HTML ...

<div class="book"> 
</div> 

CSS ..

.book { 
emotion:happy; 
} 

使用Javascript/jQuery的查询由具有情感属性,它找的书。

??? 

谢谢!

+1

如果你使用HTML5去,你可以使用'data'属性:http://www.javascriptkit.com /dhtmltutors/customattributes.shtml – 2012-07-18 01:07:38

+0

为什么你不想只使用一个类? – honyovk 2012-07-18 01:09:05

+0

我会使用'class =“书籍情绪 - 快乐”',那么它可以使用'.className'来访问/更改。 – 2012-07-18 02:00:41

回答

4

无效或未知的CSS属性(不属性)将被浏览器忽略,并且无法访问它们,因为它们未添加到DOM。

+2

是;那么,为什么要创建一个非标准的CSS属性呢? – honyovk 2012-07-18 01:10:59

+1

+1和重复提及以及':)' – 2012-07-18 01:44:03

+0

@Tats_innit哈哈,谢谢布鲁夫':)' – undefined 2012-07-18 01:46:05

1

您要使用的数据属性在这里:

<div class="book" data-emotion="happy"></div> 

和使用jQuery获得为:

$('.book[data-emotion="happy"]'); 
1

你可以与DOM中的任意属性的元素:

​<div emotion="happy">:)</div>​​​​​​​​​​​​​​​​​​​​​​​​​​​ 
... 
console.log(​$('div[emotion="happy"]').text()​​​​​​​​​​​​​​​​​​​​​);​ 
// prints ":)" 

...但最好这样做:

​<div data-emotion="happy">:)</div>​​​​​​​​​​​​​​​​​​​​​​​​​​​ 
... 
console.log(​$('div[data-emotion="happy"]').text()​​​​​​​​​​​​​​​​​​​​​);​ 
// prints ":)" 

因为使用data- user-defined attributes is recommended in HTML5

它也不会被解析为CSS规则,您为什么要这么做?

+0

我想用JavaScript编写一些支持未来CSS的东西 – zallarak 2012-07-18 01:34:18

+1

你不应该选择属性的CSS班,反正。由班级本身选择。 – ash 2012-07-18 02:06:54

1

虽然我想你可以/基于CSS属性不应该被搜索的元素:

休息我希望它可以帮助事业:)

PLZ试试这个:

var x = $('div').filter(function(){ return this.style.some_prop == 'whatever' }); 
                 ^------- ------^

注意:如果你想搜索相关属性,请看这里

$(parentElement).find('*[someAttributeName]').each(function(index){ 
    doSomething(this); 
}); 
+0

您的示例不起作用。 – zallarak 2012-07-18 01:29:34

+0

@zallarak辉煌和你downvoted,因为?什么不工作?你能解释一下吗?请''))' – 2012-07-18 01:34:19

+1

+1 for'filtering'':)' – undefined 2012-07-18 01:39:27