Heute habe ich alle meine jQuery-Plug-Ins mit jQuery 1.9.1 aktualisiert. Und ich fing an, den jQueryUI-Tooltip mit jquery.ui.1.10.2 zu verwenden. Alles war gut. Aber als ich HTML-Tags im Inhalt verwendet habe (in dertitle
Attribut des Elements, auf das ich den Tooltip angewendet habe), stellte ich fest, dass HTML nicht unterstützt wird.
Dies ist ein Screenshot meines Tooltips:
Wie kann ich HTML-Inhalte mit dem jQueryUI-Tooltip in 1.10.2 zum Laufen bringen?
jquery
html
jquery-ui
jquery-ui-tooltip
Andrew Whitaker
quelle
quelle
<b></b>
Tags direkt im Tooltip.title
Attribut verwendet, das ab 1.10 nicht mehr unterstützt wird.Antworten:
Bearbeiten : Da sich herausstellte, dass dies eine beliebte Antwort war, füge ich den Haftungsausschluss hinzu, den @crush in einem Kommentar unten erwähnt hat. Wenn Sie diese Problemumgehung verwenden, beachten Sie, dass Sie sich für eine XSS-Sicherheitsanfälligkeit öffnen . Verwenden Sie diese Lösung nur, wenn Sie wissen, was Sie tun, und sich des HTML-Inhalts im Attribut sicher sein können .
Der einfachste Weg, dies zu tun, besteht darin, der
content
Option eine Funktion bereitzustellen, die das Standardverhalten überschreibt:Beispiel: http://jsfiddle.net/Aa5nK/12/
Eine andere Möglichkeit wäre, das Tooltip-Widget mit Ihrem eigenen zu überschreiben, das das ändert
content
Option :Jetzt jedes Mal, wenn Sie anrufen
.tooltip
HTML-Inhalt zurückgegeben.Beispiel: http://jsfiddle.net/Aa5nK/14/
quelle
Putting HTML within the title attribute is not valid HTML and we are now escaping it to prevent XSS vulnerabilities
. In Andrews Antwort muss der Titel noch HTML enthalten, was ungültig ist.An Stelle von:
Verwenden Sie dies für eine bessere Leistung
quelle
Ich habe es mit einem benutzerdefinierten Daten-Tag gelöst, da ohnehin ein title-Attribut erforderlich ist.
So ist es HTML-konform und die Tooltips werden nur für gewünschte Tags angezeigt.
quelle
Sie können dies auch vollständig ohne jQueryUI erreichen, indem Sie CSS-Stile verwenden. Siehe den folgenden Ausschnitt:
Der erste Bereich ist für den angezeigten Text, der zweite Bereich für den ausgeblendeten Text, der angezeigt wird, wenn Sie den Mauszeiger darüber halten.
quelle
Um zu vermeiden, dass HTML-Tags in das title-Attribut eingefügt werden, besteht eine andere Lösung darin, Markdown zu verwenden. Sie können beispielsweise [br] verwenden, um einen Zeilenumbruch darzustellen, und dann ein einfaches Ersetzen in der Inhaltsfunktion durchführen.
Im Titelattribut:
In Ihrer Inhaltsfunktion :
quelle
Um die Antwort von @Andrew Whitaker oben zu erweitern, können Sie Ihren Tooltip in HTML-Entitäten innerhalb des Titel-Tags konvertieren, um zu vermeiden, dass rohes HTML direkt in Ihre Attribute eingefügt wird:
Meistens wird der Tooltip ohnehin in einer PHP-Variablen gespeichert, sodass Sie nur Folgendes benötigen:
quelle
danke für post und lösung oben.
Ich habe den Code ein wenig aktualisiert. Hoffe das könnte dir helfen.
http://jsfiddle.net/pragneshkaria/Qv6L2/49/
quelle
Solange wir jQuery (> v1.8) verwenden, können wir die eingehende Zeichenfolge mit $ .parseHTML () analysieren.
Wir analysieren das Attribut des eingehenden Strings auf unangenehme Dinge und konvertieren es dann wieder in jQuery-lesbares HTML. Das Schöne daran ist, dass die Zeichenfolgen zu dem Zeitpunkt, zu dem sie auf den Parser treffen, bereits verkettet sind. Es spielt also keine Rolle, ob jemand versucht, das Skript-Tag in separate Zeichenfolgen aufzuteilen. Wenn Sie mit den Tooltips von jQuery nicht weiterkommen, scheint dies eine solide Lösung zu sein.
quelle
Von http://bugs.jqueryui.com/ticket/9019
Versuchen Sie, Javascript zu verwenden, um HTML-Tooltips festzulegen (siehe unten)
quelle
Sie können den Quellcode 'jquery-ui.js' ändern und diese Standardfunktion zum Abrufen des Titelattributinhalts des Zielelements finden.
ändere es auf
Wenn Sie also HTML-Tipps anzeigen möchten, fügen Sie einfach ein Attribut ignoreHtml = 'false' zu Ihrem Ziel-HTML-Element hinzu. so was
<td title="<b>display content</b><br/>other" ignoreHtml='false'>display content</td>
quelle
Eine andere Lösung besteht darin, den Text innerhalb des
title
Tags zu erfassen und dann die.html()
Methode von jQuery zu verwenden, um den Inhalt des Tooltips zu erstellen.Beispiel: http://jsfiddle.net/hamzeen/0qwxfgjo/
quelle
Keine der oben genannten Lösungen hat bei mir funktioniert. Dieser funktioniert für mich:
quelle
HTML-Markup
Tooltip-Steuerung mit der Klasse ".why" und Tooltip-Inhaltsbereich mit der Klasse ".customTolltip"
quelle
Das Ersetzen des
\n
oder des Escaped<br/>
macht den Trick, während der Rest des HTML- Codes maskiert bleibt:quelle
Fügen Sie den Tooltip-Optionen html = true hinzu
Update
ist nicht relevant für die jQuery UI Tooltip-Eigenschaft - es ist wahr in Bootstrap UI Tooltip - mein schlechtes!
quelle