Come posso escludere $ (questo) da un selettore jQuery?


203

Ho qualcosa del genere:

<div class="content">
    <a href="#">A</a>
</div>
<div class="content">
    <a href="#">B</a>
</div>
<div class="content">
    <a href="#">C</a>
</div>

Quando si fa clic su uno di questi collegamenti, desidero eseguire la funzione .hide () sui collegamenti a cui non si fa clic. Capisco che jQuery abbia il selettore: not, ma non riesco a capire come usarlo in questo caso perché è necessario selezionare i collegamenti usando$(".content a")

Voglio fare qualcosa del genere

$(".content a").click(function()
{
    $(".content a:not(this)").hide("slow");
});

ma non riesco a capire come usare il selettore: not in questo caso.


3
prova !$(this)per un codice più semplice.
Ari,

Risposte:


390

Prova a utilizzare il not() metodo anziché il :not()selettore .

$(".content a").click(function() {
    $(".content a").not(this).hide("slow");
});

Perché non riesco a farlo funzionare ... $ ("# menu-holder #first_level li"). Not (this) .addClass ("returnToParent");
Marck,

4
@marck Senza contesto, non lo so. Crea una nuova domanda e potrei essere in grado di aiutarti.
Dan Herbert,

2
Questa è una pessima soluzione (dal punto di vista delle prestazioni). Non c'è alcun motivo reale $(".content a")all'interno del clickcallback ... su OGNI clic ...
Ronen Cypis,

42

È possibile utilizzare la notfunzione anziché il :notselettore:

$(".content a").not(this).hide("slow")

9

Puoi anche usare il .siblings()metodo jQuery :

HTML

<div class="content">
  <a href="#">A</a>
  <a href="#">B</a>
  <a href="#">C</a>
</div>

Javascript

$(".content").on('click', 'a', function(e) {
  e.preventDefault();
  $(this).siblings().hide('slow');
});

Demo funzionante: http://jsfiddle.net/wTm5f/


5

Dovresti usare il metodo "siblings ()" ed evitare di eseguire ripetutamente il selettore ".content a" solo per applicare quell'effetto:

HTML

<div class="content">
    <a href="#">A</a>
</div>
<div class="content">
    <a href="#">B</a>
</div>
<div class="content">
    <a href="#">C</a>
</div>

CSS

.content {
    background-color:red;
    margin:10px;
}
.content.other {
    background-color:yellow;
}

Javascript

$(".content a").click(function() {
  var current = $(this).parent();
  current.removeClass('other')
    .siblings()
    .addClass('other');
});

Vedi qui: http://jsfiddle.net/3bzLV/1/

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.