2012-03-26 6 views
2

Ich habe Probleme mit einem CSS-Selektor. Ich brauche eine CSS-Regel, die alle Eingabefelder zurückgibt, aber die unter einem bestimmten.Auswahl von Elementen, die nicht unter einem bestimmten Element liegen

Dies ist ein HTML-Code Beispiel:

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

Die gesprochene Regel lautet:

Gib mir alle Eingabefelder unter #container aber nicht die unter einem Element mit dem Klassennamen "sub".

Der HTML-Code ist dynamisch, daher kann ich mich nicht auf einfache Kindselektoren wie > verlassen. Ich habe schon mit dem :not() Selektor herumgespielt, hatte aber bisher kein Glück.

Hinweis: Ich verwende jQuery für die Elementauswahl.

Antwort

4

Sie sollten etwas wie das betrachten;

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

:not Der Selektor wird ohne Berücksichtigung der Eingabeelemente, die unter Unter sind. Sie könnten auch etwas wie dieses verwenden, das klarer sein könnte:

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

Manchmal sind die Lösungen so einfach% -) Vielen Dank! – acme

+1

@matt +1. nette Lösung. –

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

Vielen Dank! Das funktioniert, aber die Lösung von Matts ist eleganter, also bleibe ich dabei. – acme

+0

@acme Zustimmen. :) –

Verwandte Themen