Posso selecionar (usando jQuery) todos os divs em uma marcação HTML da seguinte maneira:
$('div')
Mas eu quero excluir um determinado div
(digamos, ter id="myid"
) da seleção acima.
Como posso fazer isso usando funções Jquery?
javascript
jquery
jquery-selectors
siva636
fonte
fonte
Respostas:
Simples:
O uso de
.not()
removerá os elementos correspondentes ao seletor fornecido a ele do conjunto retornado por$('div')
.Você também pode usar o
:not()
seletor:Ambos os seletores fazem a mesma coisa, porém
:not()
é mais rápido , presumivelmente porque o motor do seletor do jQuery, Sizzle, pode otimizá-lo para uma.querySelectorAll()
chamada nativa .fonte
.not()
é muito, muito melhor do que:not()
.$('div:not(#myid)');
(sem aspas). @Raynos: Por quê?:not()
é um seletor CSS3. jQuery pode passar diretamente o seletor paraquerySelectorAll
se for suportado ....not
e menos legível. Eu deveria ter dito ": não seletor em jQuery":not()
. Este seletor também não é novo no Seletor 4, nem foi alterado para permitir cotações. No entanto, ele foi alterado para permitir seletores mais complexos. A menos que eu não tenha entendido seu comentário ...querySelectorAll
como o mais rápido. Não é um benchmark do mundo real, mas é esperado visto que não há sobrecarga do jQuery interno.:not()
é de fato mais rápido, provavelmente porque Sizzle sabe que pode otimizá-lo para usoquerySelectorAll()
Você poderia simplesmente fazer isso à moda antiga. Não há necessidade de jQuery com algo tão simples.
Dicas profissionais:
Um conjunto de elementos dom é apenas um array, então use seu
toArray
método favorito em aNodeList
.Adicionar elementos a um conjunto é apenas
set.push.apply(set, arrOfElements);
Remover um elemento de um conjunto é
set.splice(set.indexOf(el), 1)
Você não pode remover facilmente vários elementos de uma vez :(
fonte
.querySelector()
ou.querySelectorAll()
comdiv:not(#myid)
seja mais rápido ... É?[doc]
ou
[doc]
são as principais formas de selecionar todos, exceto um id
Você pode ver a demonstração aqui
fonte
$("div:not(#myid)")
seja mais rápido ... Verifique a otimização do sizzlejs para ele, ao usar Javascript nativo.querySelector()
ou.querySelectorAll()
.Isso incluirá todos os divs, exceto aquele com id 'myid'
fonte
isso é o que você precisa, eu acho.
fonte
Isso deve resolver:
fonte
Você usa a
.not
propriedade da biblioteca jQuery:Veja em ação aqui . O div #myDiv será branco.
fonte