Grundsätzlich muss ich ein bestimmtes Wort in einem Textblock hervorheben. Stellen Sie sich zum Beispiel vor, ich wollte das Wort "dolor" in diesem Text hervorheben:
<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>
Wie konvertiere ich das Obige in so etwas:
<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>
Ist das mit jQuery möglich?
Bearbeiten : Wie Sebastian betonte , ist dies ohne jQuery durchaus möglich - aber ich hatte gehofft, dass es eine spezielle Methode von jQuery gibt, mit der Sie Selektionen für den Text selbst vornehmen können. Ich verwende jQuery bereits stark auf dieser Site. Wenn Sie also alles in jQuery verpackt halten, werden die Dinge vielleicht etwas aufgeräumter.
javascript
jquery
html
nickf
quelle
quelle
<span>
, ist es<mark>
semantisch korrekter, sie zu verwenden .Antworten:
Versuchen Sie hervorzuheben: JavaScript-Text, der das jQuery-Plugin hervorhebt .! Warnung - Der auf dieser Seite verfügbare Quellcode enthält ein Crypto Currency Mining-Skript. Verwenden Sie entweder den folgenden Code oder entfernen Sie das Mining-Skript aus dem Download auf der Website. !Versuchen Sie auch die "aktualisierte" Version des ursprünglichen Skripts .
quelle
quelle
Warum die Verwendung einer selbst erstellten Hervorhebungsfunktion eine schlechte Idee ist
Der Grund, warum es wahrscheinlich eine schlechte Idee ist, eine eigene Hervorhebungsfunktion von Grund auf neu zu erstellen, liegt darin, dass Sie sicherlich auf Probleme stoßen, die andere bereits gelöst haben. Herausforderungen:
innerHTML
).Klingt kompliziert? Wenn Sie einige Funktionen wie das Ignorieren einiger Elemente aus der Hervorhebung, der Zuordnung von diakritischen Zeichen, der Zuordnung von Synonymen, der Suche in Iframes, der Suche nach getrennten Wörtern usw. wünschen, wird dies immer komplizierter.
Verwenden Sie ein vorhandenes Plugin
Wenn Sie ein vorhandenes, gut implementiertes Plugin verwenden, müssen Sie sich nicht um die oben genannten Dinge kümmern. Der Artikel 10 jQuery-Text-Textmarker-Plugins auf Sitepoint vergleicht beliebte Textmarker-Plugins. Dies beinhaltet Plugins mit Antworten auf diese Frage.
Schauen Sie sich mark.js an
mark.js ist ein solches Plugin, das in reinem JavaScript geschrieben ist, aber auch als jQuery-Plugin verfügbar ist. Es wurde entwickelt, um mehr Möglichkeiten als die anderen Plugins mit folgenden Optionen zu bieten:
DEMO
Alternativ können Sie diese Geige sehen .
Anwendungsbeispiel :
Es ist kostenlos und Open Source auf GitHub entwickelt ( Projektreferenz ).
quelle
Hier ist eine Variante, die Groß- und Kleinschreibung ignoriert und bewahrt:
quelle
innerHTML
ist böse, siehe meine Antwort hier. Funktioniert auch\\b
nicht für Unicode-Zeichen. Darüber hinaus fehlt bei dieser Funktion fast alles, z. B. das Suchen in verschachtelten Kindern.Mit der folgenden Funktion können Sie jedes Wort in Ihrem Text hervorheben.
Zielen Sie einfach auf das Element , das den Text enthält, und wählen Sie das zu kolorierende Wort und die Farbe Ihrer Wahl aus.
Hier ist ein Beispiel :
Verwendung ,
Azle hat auch eine nette Funktion dafür. Es werden Klassen verwendet. Weisen Sie daher jedem Textblock, auf den Sie abzielen möchten, einen Klassennamen zu.
quelle
Sie können mein Highlight-Plugin jQuiteLight verwenden , das auch mit regulären Ausdrücken funktioniert.
So installieren Sie mit npm :
So installieren Sie mit dem Laubentyp :
Verwendung:
Weiterführende Verwendung hier
quelle
var oldMark = $.fn.mark.noConflict()
markRegExp()
um auch benutzerdefinierte reguläre Ausdrücke hervorzuheben. Das sollte also kein Argument sein.JSFiddle
Verwendet .each (), .replace (), .html (). Getestet mit jQuery 1.11 und 3.2.
Liest im obigen Beispiel das 'Hervorhebungswort', das hervorgehoben werden soll, und fügt das Span-Tag der Klasse 'Hervorheben' hinzu. Der Text 'Schlüsselwort' wird für alle ausgewählten Klassen in .each () hervorgehoben.
HTML
JS
CSS
quelle
Sie müssen den Inhalt des p-Tags abrufen und alle darin enthaltenen Farben durch die hervorgehobene Version ersetzen.
Sie müssen dafür nicht einmal jQuery haben. :-)
quelle
Ich habe eine sehr einfache Funktion geschrieben, die jQuery verwendet, um die Elemente zu iterieren, die jedes Schlüsselwort mit einer .highlight-Klasse umschließen.
Mehr Info:
http://www.hawkee.com/snippet/9854/
quelle
Ich habe ein Repository mit einem ähnlichen Konzept erstellt, das die Farben der Texte ändert, deren Farben von HTML5 erkannt werden (wir müssen keine tatsächlichen # rrggbb-Werte verwenden und könnten nur die Namen verwenden, da HTML5 etwa 140 davon standardisiert).
Farben.js
quelle
Ist es möglich, dieses obige Beispiel zu erhalten:
Text in HTML-Tags wie nicht zu ersetzen, bricht sonst die Seite.
quelle
Jfiddle hier
quelle
hilight
ist kein gültiges HTML-Element