atributos não encontrado por seletor de atributo jquery
-
09-09-2019 - |
Pergunta
Eu preciso reask minha velha questão, eu provavelmente should pediram-lo em 01:00: P
Parece que alguns atributos não estão sendo encontrados usando seletor de atributo da jQuery:
$("*[some=value]");
Até agora, parece que eu não posso usar atributo action do formulário, e atributo src do img. Existe um lugar lista de atributos que não fazem o trabalho para que eu possa escrever seletores personalizados para eles?
Mais uma vez obrigado!
Editar: Ninguém parece acreditar que alguns seletores não funcionam como esperado. Veja este exemplo: Em neste site (que tem jQuery 1.3 nele por firebugging) há uma forma que se parece isto:
<form style="display: inline;" method="get" action="list">
(seu redor na lista suspensa 'search downloads atuais'). Se você firebug aberto e tentar este selector:
$("form[action=list]");
Você não será capaz de selecionar o formulário. Não há nada de especial sobre o atributo action. O mesmo vale para o src da imagem do logotipo na página:
<img alt="Logo" src="/p/aost/logo?logo_id=1238551994"/>
O seletor que não funciona é a seguinte:
$("img[src=/p/aost/logo?logo_id=1238551994");
Claro, eu posso fazer partidas curinga, que não é o que eu sou depois.
Solução
Não há "lista" de atributos não suportados porque não deve haver; este é um bug no jQuery.
Aqui estão os bilhetes em aberto sobre isso:
- Não é possível selecionar uma forma usando o atributo action
- attr "ação" do formulário e filtro de atributo Seletores
- seletor de atributo "src" não funciona da mesma forma como em 1.2.6
Aparentemente o denominador comum entre os insetos é que jQuery está comparando o selector string que você especificar contra a URL completa em oposição ao atributo real de ação / src como é definido no HTML. Isso explica por que a attributeEndsWith ou o attributeContains seletores fazer o trabalho neste caso.
Eu recomendaria apenas dando a forma / imagem de uma classe / ID e recebendo logo com isso.
Outras dicas
Tudo depende de qual versão jQuery você está usando.
Antes de 1.3, você poderia usar @ notação:
$("*[@name=value]")
Então, talvez acrescentando @ ajuda.
Além disso, você deve digitar o valor do atributo exatamente o mesmo que ele está definido na marcação - por exemplo, se você está tentando encontrar uma imagem com src="http://example.com/dog.jpg"
, não fazer isso, porque não vai funcionar:
$("img[src=dog.jpg")
como ele vai estar tentando encontrar imagens com src igualar para "dog.jpg", não contendo-o.
Se você deseja pesquisar atributos que definem apenas partes dele, eu sugiro a leitura do jQuery API Seletores página. Por exemplo, para obter todas as imagens do whit src contendo "dog.jpg", você poderia usar:
$("img[src*=dog.jpg]")
Da mesma forma, você pode encontrar elementos cujos atributos começar ou terminar com valores / cordas específicas.