Il metodo not() di jquery

Il metodo not() di jQuery mi permette di escludere degli elementi dalla selezione.

.not()

Ad esempio, in questo script il selettore $(".blu") cerca l'elemento a cui ho associato la classe .blu

<!DOCTYPE html>
<html>
<head>
<style>
#box { width:100px; height:100px; text-align:center; background:#f00; font-size:14px; }
#clickme { width:100px; border:1px solid #000; }
.blu { color:blue; }
.rosso { color:red; }
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
<div id="clickme">Click here</div>
<p><b>A</b></p>
<div>
<p><b>B</b></p>
<p class=blu><b>C</b></p>
<p><b>D</b></p>
</div>
<p><b>E</b></p>
<script>
$( "#clickme" ).click(function() {
$(".blu").parents().not("html, body").addClass("rosso");
});
</script>

</body>
</html>

Quando clicco sul box clickme, il selettore $(".blu") trova l'elemento a cui ho associato la classe .blu

Poi il metodo .parents() seleziona tutti gli elementi antenati dell'elemento corrente. Quindi, tutti gli altri livelli più bassi nel DOM.

<body>
<div id="clickme">Click here</div>
<p><b>A</b></p>
<div>

<p><b>B</b></p>
<p class=blu><b>C</b></p>
<p><b>D</b></p>
</div>
<p><b>E</b></p>

Successivamente il metodo not("html, body") toglie dalla selezione gli elementi del tag <html> e <body>

Pertanto la selezione si riduce al paragrafo B e D

<body>
<div id="clickme">Click here</div>
<p><b>A</b></p>
<div>
<p><b>B</b></p>
<p class=blu><b>C</b></p>
<p><b>D</b></p>
</div>
<p><b>E</b></p>

Nota. L'elemento corrente C non viene selezionato perché il metodo parents() non lo include. Per aggiungere anche questo dovrei usare un ulteriore metodo addBack()

A questi elementi viene associata la classe .rosso tramite la funzione .addClass("rosso") che li colora di rosso

output dello script

E così via.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

jQuery