jQuery, seçicide belirli sınıfa sahip öğeleri hariç tutar


127

Belirli bağlantı etiketleri için jQuery'de bir tıklama etkinliği tetikleyicisi kurmak istiyorum.

Belirli bir sınıfa sahip olanları görmezden gelirken belirli bağlantıları yeni bir sekmede açmak istiyorum (sormadan önce, bir CMS'den geldikçe yakalamaya çalıştığım bağlantılara sınıfları koyamıyorum).

Sınıfı olan bağlantıları dışlamak istiyorum "button"VEYA"generic_link"

Denedim:

$(".content_box a[class!=button]").click(function (e) {
    e.preventDefault();     
    window.open($(this).attr('href'));
});

Ancak bu işe yaramıyor gibi görünüyor, ayrıca "generic_link"dışlamaya dahil etmek için bir VEYA ifadesini nasıl yaparım ?

Yanıtlar:


263

Sen kullanabilirsiniz .not () yöntemini:

$(".content_box a").not(".button")

Alternatif olarak : not () seçiciyi de kullanabilirsiniz :

$(".content_box a:not('.button')")

İki yaklaşım arasında çok az fark vardır, ancak .not()daha okunabilir olması (özellikle zincirlendiğinde) ve :not()çok marjinal olarak daha hızlıdır. Farklılıklar hakkında daha fazla bilgi için bu Yığın Taşması yanıtına bakın .


1
Yani şunu yapabilirdim: $ (". Content_box a") değil (". Button"). Değil (". Generic_link"). Tıklayın (function (e) ...?
Titan

1
Kullanırken bile mükemmel çalıştı .each().
cfx

Kullanırken bir hata var gibi görünüyor .text()- say kullanılarak kaldırılan öğenin .notmetni hala metinde.
Netsi1964


2

Bugün bana yardımcı olan bazı bilgileri eklemek için, bir jQuery nesnesi / thisayrıca .not () seçicisine aktarılabilir .

$(document).ready(function(){
    $(".navitem").click(function(){
        $(".navitem").removeClass("active");
        $(".navitem").not($(this)).addClass("active");
    });
});
.navitem
{
    width: 100px;
    background: red;
    color: white;
    display: inline-block;
    position: relative;
    text-align: center;
}
.navitem.active
{
    background:green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="navitem">Home</div>
<div class="navitem">About</div>
<div class="navitem">Pricing</div>

Yukarıdaki örnek basitleştirilmiş fakat kullanımını göstermek istediğini edilebilir thisiçinde not()selektör.

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.