Die neue Version von jQueryUI (1.9) kommt mit dem nativen Tooltip-Widget. Nach dem Testen funktioniert es gut, wenn der Inhalt (Wert des Titelattributs) kurz ist. Wenn der Inhalt jedoch lang ist, überlappt der Tooltip, sobald er angezeigt wird, den Eingabetext.
Wenn Sie den Mauszeiger über die Ihr Alter Text <input>, überlagert der angezeigte Tooltip die Texteingabe. Ich bin mir nicht sicher, ob dies das gewünschte Verhalten des Widgets ist. Ich möchte, dass es auf der rechten Seite der Texteingabe bleibt und gegebenenfalls Zeilen umbricht.
Bearbeiten: Die Demoseite zeigt das ursprüngliche Problem nicht mehr, da die Demo aktualisiert wurde, um jQueryUI v1.10 zu verwenden, in dem die Position Code wurde aktualisiert, um den Tooltip besser zu platzieren – siehe http://api.jqueryui.com/tooltip/#option-position
Aktualisiert mit einer jsFiddle-Demo, da die offizielle Demo das Problem mit der neuesten Version von jQuery nicht mehr zeigt. Außerdem wurde meine Antwort zum Hinzufügen von Zeilenumbrüchen aktualisiert.
– andyb
8. Februar 2013 um 10:34 Uhr
+1 für das Einschließen von jsFiddle-Demos
– Mir
24. April 2013 um 21:09 Uhr
andyb
Das Platzierung des Tooltips wird durch ein jQueryUI-Positionsobjekt gesteuert und die Standardeinstellungen sind:
Das Position Objekt, insbesondere die collision -Attribut kann geändert werden, um die Platzierung des Steuerelements an einer anderen Stelle zu erzwingen. Der Standardwert für QuickInfos ist Flipfit Das heißt, wenn die Standardeinstellung (rechts) nicht passt, wird es passen kippen nach links und versuchen Sie diese Position, und wenn das mit nichts kollidiert, versuchen Sie es fit das Steuerelement, indem Sie es vom Rand des Fensters wegbewegen. Das Ergebnis ist, dass es jetzt mit dem kollidiert <input>. Es scheint keine Option zu geben, einen langen Tooltip geschickt umzubrechen.
Es gibt jedoch zwei Möglichkeiten, den Inhalt zu umschließen:
Fügen Sie der Konfiguration mit a eine benutzerdefinierte CSS-Klasse hinzu max-width Umwickeln zu erzwingen, zum Beispiel:
JavaScript
$('input').tooltip({
tooltipClass:'tooltip'
});
CSS
.tooltip {
max-width:256px;
}
Oder fügen Sie harte Zeilenumbrüche ein <br/> im title-Attribut, zum Beispiel
title="Lorem ipsum dolor sit amet,<br/>consectetur adipisicing elit"
Bearbeiten: Es sieht also so aus, als hätte jQueryUI den Tooltip geändert Inhalt Option zwischen v1.9 und v1.10 (gemäß das Änderungsprotokoll). Als Referenz hier der Unterschied:
v1.9.2
content: function() {
return $( this ).attr( "title" );
}
v1.10
content: function() {
// support: IE<9, Opera in jQuery <1.7
// .text() can't accept undefined, so coerce to a string
var title = $( this ).attr( "title" ) || "";
// Escape title, since we're going from an attribute to raw HTML
return $( "<a>" ).text( title ).html();
}
So können Sie die ältere Funktionalität zurücksetzen, die nicht entgeht <br/> Tags in der Titel Attribut mit dem .tooltip() so was:
Es arbeitet mit <br/> in diese demo mit jQuery v1.9.1 und jQueryUI v1.9.2
– andyb
7. Februar 2013 um 23:32 Uhr
OK, also war die Frage nach v1.9. Vielleicht funktioniert es in v1.10 nicht mehr. Mit dieser neuen Version schaue ich mir das nochmal an.
– andyb
8. Februar 2013 um 6:59 Uhr
@drolex Aktualisierte Antwort für v1.10
– andyb
8. Februar 2013 um 10:34 Uhr
Beachten Sie, dass, wenn Ihr Tooltip-Text Größer-/Kleiner-als-Symbole enthält, z. B. ‘‘, das einfache alte < und > wird nicht funktionieren. Sie müssen es mit ‘<file>’ doppelt maskieren.
– Paul Williams
14. April 2016 um 22:30 Uhr
Dies ist mein Trick, um es mit dem neuesten jquery / jqueryui zu tun
Es wird davon ausgegangen, dass alle Elemente, für die Sie QuickInfos haben möchten, die Klasse „jqtooltip“ haben, sie Titel-Tags haben und der Titel ein Pipe-Zeichen als Zeilentrenner hat.
Das ist eine großartige Idee, ich muss es ausprobieren, damit meine Bilder auch geladen werden.
– Sydney
7. August 2013 um 20:40 Uhr
Um mehr als nur das erste | zu ersetzen, verwenden Sie replace(/\|/g, '<br />')
– DJB
8. August 2014 um 12:16 Uhr
Iwan-k
Ich habe eine Lösung für jQuery 2.1.1, ähnlich der Lösung von @Taru.
Grundsätzlich müssen wir den Inhaltsaufruf von Tooltip verwenden, um die Daten dynamisch aus dem Element zu erhalten. Das Element selbst kann ein beliebiges HTML-Markup enthalten. Beachten Sie, dass Sie importieren müssen
$(document).tooltip({
content: function() {
var element = $( this );
if ( element.is( "How to break line in jQueryUI tooltip" ) ) {
return element.attr( "title" );
}
},
position: {
my: "center bottom-20",
at: "center top"
}
});
Gilles Gaido
Gemäß der Dokumentation der offiziellen jQuery-Benutzeroberfläche https://api.jqueryui.com/tooltip/ Für das Tooltip-Widget (Version 1.13) habe ich diese Syntax verwendet, um einen HTML-Inhalt mit Zeilenumbrüchen festzulegen:
Auf meiner Seite funktioniert es einwandfrei.
Funktioniert auch die von andyb hier bereitgestellte Lösung, die darauf abzielt, den Inhalt anhand des Werts des Titelattributs zu bewerten:
Aktualisiert mit einer jsFiddle-Demo, da die offizielle Demo das Problem mit der neuesten Version von jQuery nicht mehr zeigt. Außerdem wurde meine Antwort zum Hinzufügen von Zeilenumbrüchen aktualisiert.
– andyb
8. Februar 2013 um 10:34 Uhr
+1 für das Einschließen von jsFiddle-Demos
– Mir
24. April 2013 um 21:09 Uhr