jQuery excluir elementos com determinada classe no seletor


127

Quero configurar um gatilho de evento de clique no jQuery para determinadas tags de âncora.

Desejo abrir determinados links em uma nova guia, ignorando os de uma determinada classe (antes de você perguntar, não posso colocar classes nos links que estou tentando capturar, pois eles vêm de um CMS).

Quero excluir links com a classe "button"OR"generic_link"

Eu tentei:

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

Mas isso não parece funcionar, como também faço uma declaração OR para incluir "generic_link"na exclusão?

Respostas:


263

Você pode usar o método .not () :

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

Como alternativa, você também pode usar o seletor: not () :

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

Há pouca diferença entre as duas abordagens, exceto que .not()é mais legível (especialmente quando encadeada) e :not()é muito marginalmente mais rápida. Consulte esta resposta de estouro de pilha para obter mais informações sobre as diferenças.


1
Então eu poderia fazer: $ não ( "botão. ") Não (" generic_link "). Click (function (e) ... (" content_box a.")...?
Titan

1
Funcionou perfeitamente, mesmo ao usar .each().
cfx

Parece que há um erro ao usar .text()- o texto do elemento removido usando say .notainda está no texto.
Netsi1964


2

Para adicionar algumas informações que me ajudaram hoje, um objeto jQuery / thistambém pode ser passado para o seletor .not () .

$(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>

O exemplo acima pode ser simplificado, mas você deseja mostrar o uso de thisno not()seletor.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.