2017-08-08 2 views
2

Hier ist mein Code:Warum hat .not() keine Auswirkungen?

$('body').not('.specific_element').css('opacity','.3');
body{ 
 
    border: 1px solid; 
 
} 
 
.specific_element{ 
 
    border: 1px solid red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p>There are some texts</p> 
 
<div class="specific_element"> 
 
    sth 
 
</div> 
 
<p>whatever</p>

Alles, was ich die Deckkraft des Elements zu tun bin versucht zu halten, die einen roten Rahmen zu 1 hat. Ich meine, ich möchte opacity: .3 auf alles außer diesem spezifischen Element anwenden. Wie kann ich das machen?

+0

das spezifische Element im Inneren des Körpers zu wählen ist und Sie Opazität auf den Körper aufgetragen. Also alle innerhalb des Körpers werden Deckkraft haben, auch wenn Sie ein Element ausschließen, weil das Element immer noch im Körper ist – guradio

+0

@guradio Nun, was ist der Job von '.not()' da? – stack

+0

so alle innerhalb des Körpers werden Deckkraft, auch wenn Sie ein Element ausschließen, weil das Element immer noch im Körper ist – guradio

Antwort

3
  1. Tragen Sie die Opazität auf die Kinder des Behälters mit Ausnahme des spezifischen Elements

$('body').children().not('.specific_element').css('opacity','.3');
body{ 
 
    border: 1px solid; 
 
} 
 

 
.specific_element{ 
 
    border: 1px solid red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p>There are some texts</p> 
 
<div class="specific_element"> 
 
    sth 
 
</div> 
 
<p>whatever</p>

0

Als @guradio vorgeschlagen, wäre es auf, indem Opazität erfolgen Geschwister des spezifischen Elements:

$('.specific_element').siblings().css('opacity','.3');
body{ 
 
    border: 1px solid; 
 
} 
 

 
.specific_element{ 
 
    border: 1px solid red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p>There are some texts</p> 
 
<div class="specific_element"> 
 
    sth 
 
</div> 
 
<p>whatever</p>

2

// Select all elements inside body except '.specific_element' 
$('body *').not('.specific_element').css('opacity','.3'); 
+0

Ich würde vorschlagen, $ ('body> *') '- weil sonst zwei Ebenen nach unten die effektive Deckkraft würde 0,09, drei Ebenen nach 0,027, dann 0,0081 etc –

1
$('*:not(*[class*="specific_element"])').css('opacity','.3'); 

auf alles außer diesem spezifischen Element.

Verwenden * alles

Verwandte Themen