Basicamente, preciso destacar uma palavra específica em um bloco de texto. Por exemplo, finja que eu queria destacar a palavra "dolor" neste texto:
<p>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
</p>
<p>
Quisque bibendum sem ut lacus. Integer dolor ullamcorper libero.
Aliquam rhoncus eros at augue. Suspendisse vitae mauris.
</p>
Como faço para converter o código acima em algo assim:
<p>
Lorem ipsum <span class="myClass">dolor</span> sit amet, consectetuer adipiscing elit.
</p>
<p>
Quisque bibendum sem ut lacus. Integer <span class="myClass">dolor</span> ullamcorper
libero. Aliquam rhoncus eros at augue. Suspendisse vitae mauris.
</p>
Isso é possível com jQuery?
Edit : Como Sebastian apontou , isso é perfeitamente possível sem jQuery - mas eu esperava que pudesse haver um método especial de jQuery que permitiria fazer seletores no próprio texto. Já estou usando jQuery intensamente neste site, então manter tudo embrulhado em jQuery tornaria as coisas talvez um pouco mais organizadas.
javascript
jquery
html
nickf
fonte
fonte
<span>
, é mais correto usar<mark>
semanticamente falando.Respostas:
Tente destaque: texto JavaScript destacando o plugin jQuery .! Aviso - O código-fonte disponível nesta página contém um script de mineração de moeda criptográfica, use o código abaixo ou remova o script de mineração do download no site. !Experimente também a versão "atualizada" do script original .
fonte
fonte
Por que usar uma função de realce criada por você mesmo é uma má ideia
O motivo pelo qual provavelmente é uma má ideia começar a construir sua própria função de realce do zero é porque você certamente encontrará problemas que outros já resolveram. Desafios:
innerHTML
)Parece complicado? Se você deseja alguns recursos como ignorar alguns elementos de realce, mapeamento de diacríticos, mapeamento de sinônimos, pesquisa dentro de iframes, pesquisa de palavras separadas, etc., isso se torna cada vez mais complicado.
Use um plugin existente
Ao usar um plugin existente e bem implementado, você não precisa se preocupar com as coisas nomeadas acima. O artigo 10 dos plug - ins de realce de texto da jQuery no Sitepoint compara os plug-ins de realce populares. Isso inclui plug-ins de respostas a esta pergunta.
Dê uma olhada em mark.js
mark.js é um plugin escrito em JavaScript puro, mas também está disponível como plugin jQuery. Ele foi desenvolvido para oferecer mais oportunidades do que os outros plug-ins com opções para:
DEMO
Alternativamente, você pode ver este violino .
Exemplo de uso :
É gratuito e desenvolvido em código aberto no GitHub ( referência do projeto ).
fonte
Aqui está uma variação que ignora e preserva maiúsculas e minúsculas:
fonte
innerHTML
é mau, veja minha resposta aqui. Além disso,\\b
não funciona para caracteres Unicode. Além disso, essa função perde quase tudo, por exemplo, pesquisar dentro de filhos aninhados.Você pode usar a seguinte função para destacar qualquer palavra em seu texto.
Basta direcionar o elemento que contém o texto, escolhendo a palavra para colorir e a cor de escolha.
Aqui está um exemplo :
Uso ,
O Azle também tem uma função legal para isso. Ele usa classes, então apenas atribua um nome de classe a qualquer bloco de texto que você deseja direcionar.
fonte
Você pode usar meu plugin de destaque jQuiteLight , que também pode funcionar com expressões regulares.
Para instalar usando o tipo npm :
Para instalar usando o tipo de caramanchão :
Uso:
Uso mais avançado aqui
fonte
var oldMark = $.fn.mark.noConflict()
markRegExp()
para destacar também expressões regulares personalizadas. Portanto, isso não deve ser um argumento.JSFiddle
Usa .each (), .replace (), .html (). Testado com jQuery 1.11 e 3.2.
No exemplo acima, lê a 'palavra-chave' a ser destacada e acrescenta a tag span com a classe 'destaque'. O texto 'palavra-chave' é destacado para todas as classes selecionadas em .each ().
HTML
JS
CSS
fonte
Você precisa obter o conteúdo da tag p e substituir todos os dolors nela pela versão destacada.
Você nem precisa ter o jQuery para isso. :-)
fonte
Eu escrevi uma função muito simples que usa jQuery para iterar os elementos que envolvem cada palavra-chave com uma classe .highlight.
Mais informações:
http://www.hawkee.com/snippet/9854/
fonte
Eu criei um repositório com um conceito semelhante que muda as cores dos textos cujas cores são reconhecidas por html5 (não temos que usar valores #rrggbb reais e poderíamos apenas usar os nomes como html5 padronizados em cerca de 140 deles)
colors.js
fonte
É possível obter este exemplo acima:
não substituir o texto dentro de tags html como, caso contrário, quebra a página.
fonte
Jfiddle aqui
fonte
hilight
não é um elemento HTML válido