$ (This) öğesini jQuery seçicisinden nasıl hariç tutabilirim?


203

Böyle bir şey var:

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

Bu bağlantılardan biri tıklatıldığında, tıklanmayan bağlantılarda .hide () işlevini gerçekleştirmek istiyorum. Anlıyorum jQuery var: değil seçici, ama ben bu durumda nasıl kullanılacağını anlayamıyorum çünkü kullanarak bağlantıları seçmek gerekir$(".content a")

Gibi bir şey yapmak istiyorum

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

ama bu durumda: değil seçici nasıl kullanılacağını anlayamıyorum.


3
!$(this)daha basit kod deneyin .
Ari

Yanıtlar:


390

Seçici yerine not() yöntemi kullanmayı deneyin .:not()

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

Neden çalışmak için alamıyorum ... $ ("# menu-holder #first_level li"). Değil (this) .addClass ("returnToParent");
marck

4
@marck Bağlam olmadan, bilmiyorum. Yeni bir soru oluşturun ve size yardımcı olabilirim.
Dan Herbert

2
Bu çok kötü bir çözümdür (performans açısından). Hiçbir gerçek nedeni için vardır $(".content a")içeride click... HER tıklamada ... callback'inde
Ronen Cypis


9

JQuery .siblings()yöntemini de kullanabilirsiniz :

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');
});

Çalışma demosu: http://jsfiddle.net/wTm5f/


5

"Siblings ()" yöntemini kullanmalı ve yalnızca bu efekti uygulamak için ".content a" seçicisini tekrar tekrar çalıştırmamanız gerekir:

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');
});

Buraya bakın: http://jsfiddle.net/3bzLV/1/

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.