Então eu tenho uma lista de HTML
<ul>
<li id="item-foo"></li>
<li id="item-bar"></li>
<li id="zoop"></li>
</ul>
e em JavaScript eu quero obter uma matriz dos itens da lista com base no seu ID. Basicamente, se o ID começar com item-
então eu quero obtê-lo em uma matriz.
A primeira maneira que fiz isso foi apenas percorrer todos os itens no DOM e pegar o ID como uma string e combiná-lo dessa maneira. Existe uma maneira melhor?
Respostas:
3 para resposta № 1Como dito nas outras respostas, seletores jQuery como [id^="item-"]
vai funcionar bem, mas deve-se notar que isso é não um recurso somente jQuery, mas sim um seletor DOM, conforme especificado por W3C.
Em outras palavras, se você não quiser incluir um kit de ferramentas monolítico como o jQuery, só assim você pode usar mais especial seletores, basta escrever:
var itemIds = document.querySelectorAll("li[id^="item-"]");
E você está aí.
O que é mais, isso será mais rápido que o jq. O jQ nunca pode igualar o vanillaJS pela velocidade. Não há necessidade de você usar o jQ aqui, então não. O JQ pode tornar a vida mais fácil, é verdade, mas não neste caso. O seletor é idêntico, então você não precisa do jQ.
Tudo que o jQ vai fazer aqui é te atrapalhar, e te ajudar a escrever código ruim ... Desculpe ... eu precisava tirar isso do meu peito.
2 para resposta № 2
O seletor adequado no jQuery seria:
$("li[id^="item-"]")
1 para resposta № 3
Use seletor: var some_array = $("li[id^="item-"]")
daqui: http://api.jquery.com/attribute-starts-with-selector/
0 para a resposta № 4
$("[id^="item-""]
Se você quiser usar o jQuery, esse seletor deve fornecer o que você está procurando.