2009-05-08 6 views
5

CSS 계산 스타일 float : left 또는 float : right 인 모든 요소를 ​​선택하려고합니다. JQuery 문서에서 사용할 수있는 속성 선택기를 볼 수 있지만 속성이 아닌 CSS 속성에 관심이 있습니다.JQuery로 페이지의 모든 부동을 선택할 수 있습니까?

이러한 기능의 가능한 사용 예는 페이지의 모든 표시 : 없음 요소를 선택하는 것입니다.

+0

큰 질문! – KyleFarris

답변

1

CSS를 통해 플로팅 스타일을 적용하면 클래스 이름을 선택하고 필요에 따라 표시/숨기기를 수행 할 수 있습니다.

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

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

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

$ ('. left.right')는 두 클래스가 모두 포함 된 요소를 찾고 있으므로이 경우 비어 있습니다. $ ('. left, .right')를 의미 했습니까? –

+0

재미있는 점은 내가 원래 그런 식으로 가지고 있었고 그 다음에 설명서를 잘못 읽었어야한다는 것입니다. 예, 쉼표가 있어야합니다. – tvanfosson

5

이 클래스 해킹없이 트릭을 수행해야 새 선택기 만들기

$(":hidden") 
5

은 다음과 같습니다

$("*").filter(function() { 
    return /^(left|right)$/.test($(this).css("float")) 
}) 

을 그건 그렇고, jQuery를 이미 모든 display: none 요소를 찾을 수있는 좋은 방법이 일종의 재미, 그래서 그랬어 :

우사 GE :

: hasCssAttr (특성, 값 ...)

Property는 사용이

value이 값 (들)이 일치하고 싶은 것입니다 비교하고 싶은 CSS 속성입니다 에 대해

$(':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; 
} 

기본적으로 모든 'css 속성을 선택합니다. 난 당신이 단지 하나의 가치, 불필요한 종류를 원한다면 당신은 루프를 제거 할 수 있다고 가정합니다. 또한, 당신이 수치 비교를 할 수 있도록 평가에서 이것을하는 것이 더 흥미로운 지 궁금합니다. 어쨌든. 거기는.

Props to Ben for helping me out.

+0

+1 자신 만의 유연한 선택기를 만드십시오. 가능한 경우 항상 유연한 솔루션을 선호합니다. – KyleFarris

관련 문제