Usando jQuery, quero selecionar um link que contém exatamente algum tipo de texto. Por exemplo:
<p><a>This One</a></p>
<p><a>"This One?"</a></p>
<p><a>Unlikely</a></p>
Eu tentei isso:
$('a:contains("This One")')
Mas ele escolhe o primeiro E o segundo link. Eu só quero o primeiro link, que contém exatamente "Este". Como eu posso fazer isso?
jquery
jquery-1.6
Endy Tjahjono
fonte
fonte
Respostas:
Você consegue fazer isso:
Referência: http://api.jquery.com/filter/
fonte
return
. Tenho que mudar parafunction(index) { return (this.text === 'This One') }
Um colega meu estendeu o jQuery com uma função para fazer isso:
O resultado é que você pode selecionar algo pelo texto exato desta forma:
Isso torna mais fácil, pois você não precisa se lembrar da sintaxe exata todas as vezes. Sua postagem inteira está aqui: jQuery Custom Selector para selecionar elementos pelo texto exato: textEquals
fonte
Para expandir a resposta da FishBasketGordo. Se você estiver tentando fazer a seleção em uma grande quantidade de elementos, use
:contains()
primeiro para restringir e depois aplique o filtro.Isso vai melhorar a velocidade geral:
fonte
teve que modificar a solução de Nariman para ser:
Caso contrário, não funcionou no Chrome (Linux)
fonte
Eu estava usando a extensão
Mas descobri que a implementação não funciona mais com jQuery 1.7 (aparentemente uma mudança em Sizzla.filter). Depois de lutar por algum tempo para fazê-lo funcionar, simplesmente escrevi um plugin jQuery para fazer o mesmo.
Usar:
Só queria compartilhar, caso outra pessoa se depare com isso (,
fonte
Portanto, a resposta de Narnian funciona muito bem. Usando-o em estado selvagem, no entanto, me deparei com alguns problemas, em que coisas que eu esperava encontrar não estavam sendo encontradas. Isso acontecia porque às vezes há um espaço em branco aleatório em torno do texto do elemento. Acredito que, se você estiver pesquisando "Hello World", ainda assim desejará que corresponda a "Hello World" ou mesmo a "Hello World \ n". Portanto, acabei de adicionar o método "trim ()" à função, que remove os espaços em branco ao redor, e ela começou a funcionar melhor. Além disso, modifiquei os nomes das variáveis para ficar um pouco mais claro em minha mente.
Especificamente...
E nota secundária ... o corte remove apenas os espaços em branco antes e depois do texto pesquisado. Não remove espaços em branco no meio das palavras. Acredito que este seja um comportamento desejável, mas você poderia mudar isso se quisesse.
fonte
Sinto que estou perdendo algo com base na resposta de todos para filtrar, mas por que não selecionar apenas o primeiro item na matriz de elementos que é retornado por 'contém'?Isso funciona apenas se você souber que o primeiro link tem a correspondência exata que você está procurando. Outras respostas funcionam melhor, se você não tiver certeza da ordem em que os links estarão.
fonte
Como obter o valor selecionado de um drop-dwon:
console.log($("option").textEquals("Option One"));
- ele retornará o valor do menu suspensofonte
fonte
Desculpe, se isso corresponde exatamente à resposta de alguém acima,
Aqui estão algumas saídas no console da página de resultados de pesquisa do Linkedin.
Ele também tem suporte para diferenciação de maiúsculas e minúsculas e não está usando
:contains()
Editar (22 de maio de 2017): -
fonte