是否可以使用JQuery选择页面上的所有浮点数?

5 jquery

我试图选择具有CSS计算样式float:left或float:right的所有元素.我在JQuery文档中看到了属性选择器,但我对CSS属性而不是属性感兴趣.

这种功能的可能用例是在页面上选择所有display:none元素.

Jed*_*idt 5

这应该没有类黑客攻击的伎俩:

$("*").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)


cgp*_*cgp 5

创建新的选择器很有趣,所以我这样做:

用法:

: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中执行此操作可能更有趣,因此您可以进行数值比较.无论如何.它就是.

向Ben帮助我的道具.


tva*_*son 1

一种想法是通过 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)