2010-11-30 1 views
7

Wie zum Beispiel:Wie fügt man allen Elementen des Elements css style gleichzeitig hinzu?

<div class="mostOut"> 
    <div class="a"> 
     <h3 class="b"></h3> 
     <div class="d"></div> 
    </div> 
</div> 

Und wie kann ich CSS-Stil für die Kinder von "moustOut" am gleichen time.Eg gelten:

mit einem click event .the css('opacity',1) zum "a","b","d" zur gleichen Zeit anwenden könnte .oder, schließen Sie "b" aus.

+2

Chil dre kann keine größere Deckkraft als ihr Elternteil haben, warum nicht die Opazität * only * auf dem '.mostOut' Element setzen? –

+0

weil ich ein Jquery Ui benutze und wenn ich es deaktiviere. Es wendet disabled-state auf die Elemente an, die es wollen. Also muss ich die Deckkraft für diese Elemente wieder auf 1 setzen. – qinHaiXiang

Antwort

2

Dies könnte eine schmutzige Lösung sein, aber es sollte funktionieren:

$('.mostOut').click(function() 
{ 
    $(this).find('*').each(function() 
    { 
    $(this).css('opacity', 1); 
    }); 
}); 

Für alle, aber die b Element auszuschließen, versuchen Sie dies:

$('.mostOut').click(function() 
{ 
    $(this).find('*').not('.b').each(function() 
    { 
    $(this).css('opacity', 1); 
    }); 
}); 

Wiedergabe mit dem Code, wie ich gerade eingegeben das ist aus der Spitze meines Kopfes, also garantiere ich nicht, dass es funktionieren wird.

Viel Glück!

8

etwas weniger Code

$('.mostOut').click(function() 
{ 
    $(this).children("*").css('opacity', 1); 
}); 

und ausschließen ".B"

$('.mostOut').click(function() 
{ 
    $(this).children("*").not(".b").css('opacity', 1); 
}); 

oder alternativ, wenn sie nicht die Trübung verursachen, die versteckten/keine

$('.mostOut').click(function() 
{ 
    $(this).children("*").show(); 
}); 
+1

die children() finden nur die nächste Ebene der Elemente: solche Klasse = "a", die Elemente innerhalb von "a" ausschließen – qinHaiXiang

2

Haben Sie überlegt, eine 100% CSS-Methode zu verwenden?

Als Nick Craver wies darauf hin: "Die Kinder können nicht eine größere Opazität dann ihre Eltern haben, warum nicht die Opazität nur gesetzt, auf dem .mostOut Element?"

HTML

<div class="mostOut"> 
    div class mostOut 
    <div class="a"> 
    div class a 
    <h3 class="b">h3 class b</h3> 
    <div class="d">div class d</div> 
    </div> 
</div> 

CSS

.mostOut{ 
    opacity:0.5; 
} 
.mostOut:active{ 
    opacity:1; 
} 

Oder die CSS-Child Selector (gleiche HTML wie oben) verwenden:

CSS

.mostOut:active > div{ 
    border:solid 1px gray; 
    opacity:0.5; 
} 
Verwandte Themen