5 jquery
我试图选择具有CSS计算样式float:left或float:right的所有元素.我在JQuery文档中看到了属性选择器,但我对CSS属性而不是属性感兴趣.
这种功能的可能用例是在页面上选择所有display:none元素.
这应该没有类黑客攻击的伎俩:
$("*").filter( function() {
return /^(left|right)$/.test( $(this).css("float") )
})
Run Code Online (Sandbox Code Playgroud)
顺便说一句,jQuery已经找到了一个很好的方法来查找所有display: none元素:
$(":hidden")
Run Code Online (Sandbox Code Playgroud)
创建新的选择器很有趣,所以我这样做:
用法:
:hasCssAttr(属性,值......)
Property是您想要用来比较的css属性
value是您想要匹配的值(您可以拥有多个)
$(':hasCssAttr(float, left)').css('float', 'right');
Run Code Online (Sandbox Code Playgroud)
来源卢克:
$.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;
}
Run Code Online (Sandbox Code Playgroud)
基本上,这会选择任何ol'css属性.我想你可以消除循环,如果你只想要一个值,那是不必要的.另外,我想知道在eval中执行此操作可能更有趣,因此您可以进行数值比较.无论如何.它就是.
一种想法是通过 CSS 应用浮动样式,然后您可以选择类名称并根据需要进行显示/隐藏。
<style>
.right { float: right; }
.left { float: left; }
</style>
<div class='left'>...</div>
<div class='right'>...</div>
$('.left,.right').hide();
Run Code Online (Sandbox Code Playgroud)