javascript - Não seletor de classe em jQuery




jquery-selectors (3)

Existe uma expressão de seletor simples para não selecionar elementos com uma classe específica?

<div class="first-foo" />
<div class="first-moo" />
<div class="first-koo" />
<div class="first-bar second-foo" />

Eu só quero pegar os primeiros três divs e tentei

$(div[class^="first-"][class!="first-bar"])

Mas isso recebe tudo como a última div contém mais de primeira barra. Existe uma maneira de usar um espaço reservado em tal expressão? Algo parecido

$(div[class^="first-"][class!="first-bar*"]) // doesn't seem to work

Algum outro seletor que possa ajudar?


Answers

Você precisa do seletor: :not() :

$('div[class^="first-"]:not(.first-bar)')

ou, alternativamente, o método .not() :

$('div[class^="first-"]').not('.first-bar');

Você pode usar o seletor: :not filter:

$('foo:not(".someClass")')

Ou not() método:

$('foo').not(".someClass")

Mais informações:


jQuery: você pensa muito sobre 'QUERYing the DOM ' para elementos DOM e fazer alguma coisa.

AngularJS: O modelo é a verdade, e você sempre pensa a partir desse ÂNGULO.

Por exemplo, quando você obtém dados do servidor que você pretende exibir em algum formato no DOM, no jQuery, é necessário '1. FIND 'onde no DOM você quer colocar estes dados, o' 2. UPDATE / APPEND 'lá, criando um novo nó ou apenas definindo seu innerHTML . Então quando você quiser atualizar esta visão, você então '3. ENCONTRE 'a localização e' 4. ATUALIZAR'. Esse ciclo de localizar e atualizar tudo feito dentro do mesmo contexto de obtenção e formatação de dados do servidor desapareceu no AngularJS.

Com o AngularJS você tem o seu modelo (objetos JavaScript que você já está acostumado) e o valor do modelo informa sobre o modelo (obviamente) e sobre a visão, e uma operação no modelo automaticamente se propaga para a visão, então você não Não tenho que pensar nisso. Você se encontrará no AngularJS não encontrando mais coisas no DOM.

Para colocar de outra forma, no jQuery, você precisa pensar sobre os seletores CSS, ou seja, onde está o divou tdque tem uma classe ou atributo, etc., para que eu possa obter seu HTML ou cor ou valor, mas no AngularJS, você se verá pensando assim: com qual modelo eu estou lidando, vou definir o valor do modelo como verdadeiro. Você não está se incomodando se a visualização refletindo esse valor é uma caixa marcada ou se reside em um tdelemento (detalhes que você frequentemente precisaria pensar em jQuery).

E com a manipulação do DOM no AngularJS, você se encontra adicionando diretivas e filtros, que você pode considerar como extensões HTML válidas.

Outra coisa que você vai experimentar no AngularJS: no jQuery, você chama muito as funções do jQuery, no AngularJS, o AngularJS chama suas funções, então o AngularJS lhe dirá como fazer as coisas, mas os benefícios valem a pena, então aprender AngularJS geralmente significa aprender o que o AngularJS quer ou o modo como o AngularJS requer que você apresente suas funções e ele as chamará de acordo. Essa é uma das coisas que faz do AngularJS uma estrutura em vez de uma biblioteca.







javascript jquery jquery-selectors