2012-03-26 67 views
2

我正在用CSS選擇器掙扎。我需要一個css規則,它返回所有輸入字段,但是那些低於特定字段的字段。選擇不低於給定元素的元素

這是一個HTML代碼示例:

<div id="container"> 
    <div> 
     <input name="apple"> 
     <div class="sub"> 
      <input name="banana"> 
      <input name="grapefruit"> 
     </div> 
    </div> 
</div> 

口語規則是:

給我所有輸入字段下面#container但不是那些與類名「子」的元素下面。

該html代碼是動態的,所以我不能依靠簡單的子選擇器,如>。我已經撥弄:not()選擇器,但目前還沒有運氣。

注:我使用jQuery進行元素選擇。

回答

4

你應該看到這樣的東西;

$('input:not(.sub input)') 

:not選擇器不包括低於sub的輸入元素。你也可以使用這樣的東西,可能會更清楚:

$('input').not($('.sub').find('*')); 
+1

有時解決方案非常簡單% - )非常感謝! – acme 2012-03-26 13:42:13

+1

@matt +1。好的解決方案 – 2012-03-26 13:44:10

0
$("#container input").filter(
        function(){ 
           return $(this).parent().hasClass("sub")==false 
           } 
          ).css('background-color','red'); //make those elements - RED 
+0

謝謝!這是有效的,但Matts解決方案更加優雅,所以我堅持這一點。 – acme 2012-03-26 13:49:50

+0

@acme同意:) – 2012-03-26 13:50:12