Gostaria de saber quais seletores estão disponíveis para esses atributos de dados que acompanham o HTML5.
Tomando este pedaço de HTML como exemplo:
<ul data-group="Companies">
<li data-company="Microsoft"></li>
<li data-company="Google"></li>
<li data-company ="Facebook"></li>
</ul>
Existem seletores para obter:
- Todos os elementos com
data-company="Microsoft"
abaixo"Companies"
- Todos os elementos com
data-company!="Microsoft"
abaixo"Companies"
- Em outros casos, é possível usar outros seletores como "contém, menor que, maior que, etc ...".
Respostas:
Olhe para os seletores jQuery : contém um seletor
aqui estão as informações no seletor: contains
fonte
$('div[data-col="1"][data-row="2"]')
Isso selecionará a div em que a coluna de dados é igual a 1 e a linha de dados é igual a 2, ou será selecionada em qualquer uma delas?.attr('data-something', 'value')
para ver a atualização no HTML. Como stackoverflow.com/questions/6827810/…data
a chamada?$('#element').data('something')
jQuery UI
possui um:data()
seletor que também pode ser usado. Existe desde a versão 1.7.0, ao que parece.Você pode usá-lo assim:
Obter todos os elementos com um
data-company
atributoObtenha todos os elementos onde
data-company
iguaisMicrosoft
Obter todos os elementos onde
data-company
não é igualMicrosoft
etc ...
Uma ressalva do novo
:data()
seletor é que você deve definir odata
valor pelo código para que ele seja selecionado. Isso significa que, para que o acima funcione, definir odata
HTML não é suficiente. Você deve primeiro fazer isso:Isso é bom para aplicativos de página única em que é provável que você use
$(...).data("datakey", "value")
dessa maneira ou de maneiras semelhantes.fonte
:data()
seletor ou o.data()
método?jsFiddle Demo
O jQuery fornece vários seletores (lista completa) para fazer com que as consultas que você está procurando funcionem. Para responder à sua pergunta "Em outros casos, é possível usar outros seletores como" contém, menor que, maior que, etc ... "." você também pode usar contém, inicia e termina com para examinar esses atributos de dados html5. Veja a lista completa acima para ver todas as suas opções.
A consulta básica foi abordada acima, e usar a resposta de John Hartsock será a melhor aposta para obter todos os elementos da empresa de dados ou para obter todos, exceto a Microsoft (ou qualquer outra versão do ).
:not
Para expandir isso para os outros pontos que você está procurando, podemos usar vários meta-seletores. Primeiro, se você fizer várias consultas, é bom armazenar em cache a seleção pai.
Em seguida, podemos procurar empresas nesse conjunto que começam com G
Ou talvez empresas que contenham a palavra soft
Também é possível obter elementos cujo final do atributo de dados corresponde
fonte
Solução JS pura / baunilha (exemplo de trabalho aqui )
Em querySelectorAll, você deve usar o seletor CSS válido (atualmente Nível3 )
O SPEED TEST (2018.06.29) para jQuery e JS puro: o teste foi realizado no MacOs High Sierra 10.13.3 no Chrome 67.0.3396.99 (64 bits), Safari 11.0.3 (13604.5.6), Firefox 59.0.2 (64) -mordeu). A captura de tela abaixo mostra os resultados do navegador mais rápido (Safari):
O PureJS foi mais rápido que o jQuery, cerca de 12% no Chrome, 21% no Firefox e 25% no Safari. Curiosamente, a velocidade do Chrome foi de 18,9 milhões de operações por segundo, Firefox 26M, Safari 160,9M (!).
Então o vencedor é o PureJS e o navegador mais rápido é o Safari (mais de 8x mais rápido que o Chrome!)
Aqui você pode executar o teste em sua máquina: https://jsperf.com/js-selectors-x
fonte