我试图选择所有具有CSS计算样式float:left或float:right的元素。我在JQuery文档中看到了属性选择器,但是我对CSS属性而不是属性感兴趣。
此类功能的可能用例是选择在页面上显示所有display:none元素。
答案 0 :(得分:5)
这应该可以做到没有类黑客的技巧:
$("*").filter( function() {
return /^(left|right)$/.test( $(this).css("float") )
})
顺便说一下,jQuery已经找到了所有display: none
元素的好方法:
$(":hidden")
答案 1 :(得分:5)
创建新的选择器很有趣,所以我这样做了:
<强>用法:强>
:hasCssAttr(property,value ...)
Property
是您要用来比较的css属性
value
是您想要匹配的值(您可以拥有多个)
$(':hasCssAttr(float, left)').css('float', 'right');
来源卢克:
$.expr[':'].hasCssAttr = function(objNode, intStackIndex, arrProperties, arrNodeStack) {
var arrArguments = arrProperties[3].split(',');
var cssPropVal = $(objNode).css(arrArguments[0]); // need for speed
for (var i = 1 ; i < arrArguments.length ; i++)
if (cssPropVal == arrArguments[ i ].replace(/^\s+|\s+$/g,""))
return true;
return false;
}
基本上,这会选择任何ol'css属性。我想你可以消除循环,如果你只想要一个值,那是不必要的。另外,我想知道在eval中执行此操作可能更有趣,因此您可以进行数值比较。无论如何。它就是。
答案 2 :(得分:1)
一个想法是通过CSS应用浮动样式然后你可以选择类名并根据需要进行显示/隐藏。
<style>
.right { float: right; }
.left { float: left; }
</style>
<div class='left'>...</div>
<div class='right'>...</div>
$('.left,.right').hide();