Usando jQuery, estou programaticamente gerando um monte de div
's como este:
<div class="mydivclass" id="myid1">Some Text1</div>
<div class="mydivclass" id="myid2">Some Text2</div>
Em outro lugar do meu código, preciso detectar se esses DIVs existem. O nome da classe para as divs é o mesmo, mas o ID é alterado para cada div. Alguma idéia de como detectá-los usando o jQuery?
:first
lá ajudaria o desempenho (não sei se o desempenho é um critério importante para o @itgorilla), mas se ele varia muito de acordo com o navegador, provavelmente porque altera os recursos nativos que o jQuery pode usar para fazer o seleção. Aqui está um caso de teste em que a div existe e outro onde ela não existe .if (!$(".mydivclass")[0]){ /* do stuff */ }
Você pode usar
size()
, mas o jQuery recomenda o uso do comprimento para evitar a sobrecarga de outra chamada de função:Assim:
http://api.jquery.com/size/
http://api.jquery.com/length/
ATUALIZAR
A resposta selecionada usa um teste de desempenho, mas é um pouco falho, pois também inclui a seleção de elementos como parte do desempenho, que não é o que está sendo testado aqui. Aqui está um teste de desempenho atualizado:
http://jsperf.com/check-if-div-exists/3
Minha primeira execução do teste mostra que a recuperação de propriedades é mais rápida que a recuperação de índice, embora o IMO seja bastante insignificante. Eu ainda prefiro usar o comprimento, pois faz mais sentido quanto à intenção do código, em vez de uma condição mais concisa.
fonte
.length
atualmente oferece o melhor desempenho médio.Sem jQuery:
O JavaScript nativo sempre será mais rápido. Nesse caso: (exemplo)
Se você deseja verificar se um elemento pai contém outro elemento com uma classe específica, você pode usar um dos seguintes. (exemplo)
Como alternativa, você pode usar o
.contains()
método no elemento pai. (exemplo)..e finalmente, se você quiser verificar se um determinado elemento contém apenas uma determinada classe, use:
fonte
fonte
div
elementos da página e, em seguida, voltar e faça um loop neles para ver se eles têm essa classe, tudo para jogar fora a matriz no final).hasClass
é 33% mais rápido que os outros seletores aqui. Verifique jsperf.com/hasclass00div
elementos) que contorna a questão que destaquei (a construção da matriz). Experimente com várias divs: jsperf.com/hasclass00/2 É 63% mais lento na minha cópia do Chrome, 43% mais lento na minha cópia do Firefox, 98% (!) Mais lento no Opera. Além disso, faz sentido que seja mais lento criar uma lista de divs e pesquisá-la, em vez de fornecer ao mecanismo seletor todas as informações necessárias.Aqui está uma solução sem usar o Jquery
link de referência
fonte
É bem simples ...
fonte
Para testar
div
elementos explicitamente:if( $('div.mydivclass').length ){...}
fonte
.mydivclass
dependendo do navegador e da versão do jQuery.div
parte do seletor.O código simples é dado abaixo:
Para ocultar a div com o ID do participante:
fonte
Aqui estão algumas maneiras:
Podemos usar qualquer uma das maneiras definidas acima com base no requisito.
fonte
O
size()
método apenas retorna o número de elementos que o seletor jQuery seleciona - nesse caso, o número de elementos com a classemydivclass
. Se retornar 0, a expressão será falsa e, portanto, não haverá, e se retornar qualquer outro número, as divs deverão existir.fonte
length
propriedade? Além disso, isso verifica qualquer elemento com essa classe, não apenas adiv
. (Agora, pode ser o que o OP quis dizer, mesmo que não o que ele disse.) Veja a resposta de Stefan Kendall, que faz o que o OP realmente disse (embora, novamente, eles possam ter significado o que você fez).div
peça, por dois motivos: 1) o seletor não está limitado ao fato de que o OP usa umdiv
elemento (pode ser alterado no futuro) e 2) em Na maioria dos navegadores e versões do jQuery, AFAIK, isso deve ser mais rápido.length
propriedade está lá, por que não usá-la? Mas se é sua preferência, é justo. Por outro lado, eu não sabia que você tinha editado. Se eu fosse fazer isso, eu o deixaria (novamente, ele disse especificamente "... se div com ..." (minha ênfase) e depois mencionou adicionalmente que, se não importasse se era umdiv
ou não, você poderia abandonar essa parte, mas tanto faz. :-)size()
método existe para deixar claro que você está contando o número de elementos em um seletor jQuery, e não apenas em qualquer array antigo. Mas, novamente, essa é apenas a minha preferência.verifique se a div existe com uma determinada classe
fonte
fonte
fonte
No Jquery você pode usar assim.
Com JavaScript
fonte
Aqui está uma solução de exemplo para a classe check (hasClass) em Javascript:
fonte
A melhor maneira em Javascript:
fonte
if ($ ("# myid1"). hasClass ("mydivclass")) {// Faça alguma coisa}
fonte
Use isso para pesquisar página inteira
fonte