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

时间:2009-05-08 17:59:17

标签: jquery

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

此类功能的可能用例是选择在页面上显示所有display:none元素。

3 个答案:

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

Props to Ben for helping me out.

答案 2 :(得分:1)

一个想法是通过CSS应用浮动样式然后你可以选择类名并根据需要进行显示/隐藏。

 <style>
    .right { float: right; }
    .left { float: left; }
 </style>

 <div class='left'>...</div>
 <div class='right'>...</div>

  $('.left,.right').hide();