Dodaj podział linii w etykietach narzędzi

170

W jaki sposób można dodawać podziały wierszy w podpowiedzi HTML?

Próbowałem użyć <br/>i \nwewnątrz podpowiedzi w następujący sposób:

<a href="#" title="Some long text <br/> Second line text \n Third line text">Hover me</a>

Jednak było to bezużyteczne i mogłem zobaczyć dosłowny tekst <br/>oraz \nw podpowiedzi. Wszelkie sugestie będą pomocne.

Aakash Chakravarthy
źródło
3
Miałem to samo pytanie: stackoverflow.com/questions/3320081/…
San
1
użyj <pre> data-html = "true" </pre> Ref i podziękowania dla: stackoverflow.com/a/19001875/2278891
Sunit
W asp.net (C # .NET 4.5 Framework) dodawanie Environment.NewLinedziała w celu dodania podziału wiersza od strony kodu ... bez kłopotów ... bez muss ...
Dan B

Odpowiedzi:

270

Po prostu użyj kodu jednostki &#013;dla podziału wiersza w atrybucie tytułu.

Fred Senese
źródło
17
jeśli kod jednostki & # 013; nie działa, spróbuj & # 10; Używam Linuksa i Chrome nie jestem pewien co do innych przeglądarek
Krishna
3
Wypróbowałem to i działa, gdy wstrzykuję go za pomocą elementu inspect, ale nie, gdy dołączam go do mojego html i wdrażam z tą postacią. Czy jest jakiś oczywisty powód, dla którego mogę tęsknić?
Riaan Schutte
1
Dla mnie &#10nie działa dla mnie w Windows, Chrome v53. Ale &#013;działało dobrze.
Lucky
9
Po prostu użyłem obu wersji, &#013;&#010;wydaje się, że działa całkiem nieźle :)
Phe0nix
6
& # 013; nie działa w przeglądarce Firefox v58. Jednak & # 10 działa dobrze. Korzystanie z rozwiązania @ Phe0nix polegającego na używaniu obu podziałów wiersza zgodnie z wymaganiami działa dobrze, aby działało w Chrome, Microsoft Edge i Firefox.
Pretty Cool
69

Po prostu dodaj atrybut danych

data-html = "true"

i jesteś gotowy.

Na przykład. stosowanie:

<i data-html="true" class="tooltip ficon-help-icon" twipsy-content-set="true" data-original-title= "<b>Hello</b> Stackoverflow" </i>

To działało w większości wtyczek z etykietkami narzędzi, które wypróbowałem do tej pory.

siwalikm
źródło
3
data-html = "true" z <br /> tekstem tytułu działa doskonale.
viks
1
Żadne z powyższych rozwiązań nie zadziałało. Ale ten działa dobrze.
abby
64

W &#013;połączeniu ze stylem spacji: pre-line; pracował dla mnie.

GuitarWorker
źródło
3
Spędziłem trochę czasu, próbując zmusić to do działania. Fakt, że white-space: pre-line;styl jest potrzebny, jest bardzo ukryty.
Jim D,
@JimD do jakiej klasy / elementu ma zastosowanie reguła stylu?
Judah Meek
Dla mnie działa to dobrze bez niestandardowego css w etykietkach narzędzi.
ST-DDT
2
To jest ten, którego szukasz przyjaciół.
Henrik Petterson
3
Właściwie postać powinna wyglądać następująco &#010;: stackoverflow.com/questions/6502054/ ...
Henrik Petterson
10

Podaj \nmiędzy tekstem. Działa na wszystkich przeglądarkach.

Example 
img.tooltip= " Your Text : \n"
img.tooltip += " Your text \n";

To zadziała dla mnie i jest używane w kodzie.

Mam nadzieję, że to zadziała

Priyanka Thakur
źródło
10
\n

ze stylizacją

.tooltip-inner {
    white-space: pre-line;
}

pracował dla mnie.

klausf
źródło
4

Znalazłem to. Można to zrobić po prostu w ten sposób

<a ref="#" title="First Line
                  Second Line
                  Third line">Hover Me</a>
Aakash Chakravarthy
źródło
4

Wersja javascript

Ponieważ &#013;(html) to 0D(hex), można to przedstawić jako'\u000d'

str = str.replace(/\n/g, '\u000d');

Dodatkowo,

Dzielę się z wami filtrem AngularJS, który zastępuje \nten znak dzięki odniesieniom w innych odpowiedziach

app.filter('titleLineBreaker', function () {
    return function (str) {
        if (!str) {
            return str;
        }

        return str.replace(/\n/g, '\u000d');
    };
});

stosowanie

<div title="{{ message | titleLineBreaker }}"> </div>
Jossef Harush
źródło
4

po prostu użyj \ nw tytule i dodaj ten css

.tooltip-inner {
    white-space: pre-wrap;
}
Dhanushka
źródło
3

&lt;br /&gt; zadziałało, jeśli używasz qTip

Eduardo Molteni
źródło
3

Po prostu dodaj data-html = "true"

<a href="#" title="Some long text <br/> Second line text \n Third line text" data-html="true">Hover me</a>
Babo Darbinyan
źródło
2

możliwe jest dodawanie podziałów wierszy w natywnych podpowiedziach HTML poprzez po prostu rozłożenie atrybutu tytułu na wiele wierszy.

Jednak polecam użycie wtyczki jQuery tooltip, takiej jak Q-Tip: http://craigsworks.com/projects/qtip/ .

Jest prosty w konfiguracji i obsłudze. Alternatywnie istnieje wiele darmowych wtyczek z podpowiedziami javascript.

edycja: korekta na pierwszym oświadczeniu.

Ross
źródło
2

Dla mnie 2-etapowe rozwiązanie (połączenie formatowania tytułu i dodania stylu) działało w następujący sposób:

1) Sformatuj titleatrybut:

<a ref="#" title="First Line
                  Second Line
                  Third line">Hover Me</a>

2) Dodaj ten styl do tipselementu:

white-space: pre-line;

Przetestowano w IE8, Firefox 22 i Safari 5.1.7.

user2052547
źródło
Myślę, że to bałagan, mieć przerywane linie w kodzie
Fandango68,
2

Po prostu dodaj ten fragment kodu do swojego skryptu:

    $(function () {
        $('[data-toggle="tooltip"]').tooltip()
    });

i oczywiście, jak wspomniano w powyższych odpowiedziach, data-htmlpowinno być "true". Umożliwi to użycie tagów html i formatowania wewnątrz wartości titleatrybutu.

zakoduj to
źródło
+1, Twoje rozwiązanie zadziałało. mój przykładowy kod: data-toggle="tooltip" data-html="true" title="some string <br/> some string".
Pranesh Janarthanan
Dobrze to słyszeć 👍
to
1

Cóż, jeśli używasz narzędzia Jquery Tooltip , w pliku Javascript „jquery-ui.js” znajdź następujący tekst:

tooltip.find(".ui-tooltip-content").html(content);

i umieść powyżej

content=content.replace(/\&lt;/g,'<').replace(/\&gt;/g,'>');

Mam nadzieję, że to zadziała również dla Ciebie.

user2160658
źródło
1

Więc jeśli używasz bootstrap4, to zadziała.

<style>
   .tooltip-inner {
    white-space: pre-wrap;
   }

</style>

<script> 
    $(function () {
      $('[data-toggle="tooltip"]').tooltip()
    })
</script>

<a data-toggle="tooltip" data-placement="auto" title=" first line &#010; next line" href= ""> Hover me </a>

Jeśli używasz w projekcie Django, możemy również wyświetlać dane dynamiczne w podpowiedziach, takich jak:

<a class="black-text pb-2 pt-1" data-toggle="tooltip" data-placement="auto"  title="{{ post.location }} &#010; {{ post.updated_on }}" href= "{% url 'blog:get_user_profile' post.author.id %}">{{ post.author }}</a>
Mayank chauhan
źródło
0

Rozwiązaniem dla mnie było http://jqueryui.com/tooltip/ :

A oto kod (część skryptu tworząca <br/>Works to „content:”):

HTML HEAD

<head runat="server">
    <script src="../Scripts/jquery-2.0.3.min.js"></script>
    <link href="Content/themes/base/jquery-ui.css" rel="stylesheet" />
    <script src="../Scripts/jquery-ui-1.10.3.min.js"></script>
<script>
    /*Position:
      my =>  at
      at => element*/
    $(function () {
        $(document).tooltip({
            content: function() {
                var element = $( this );
                if ( element.is( "[title]" ) ) {
                    return element.attr( "title" );
                }

            },
            position: { my: "left bottom-3", at: "center top" } });
    });
</script>
</head>

Formant ASPX lub HTML

<asp:TextBox ID="Establecimiento" runat="server" Font-Size="1.3em" placeholder="Establecimiento" title="Texto 1.<br/>TIP: texto 2"></asp:TextBox>

Mam nadzieję, że to komuś pomoże

Diego P.
źródło
0

Interfejs użytkownika Grater niż Jquery UI 1.10 nie obsługuje używania tagu html w atrybucie title, ponieważ jest to nieprawidłowy kod HTML.

Zatem alternatywnym rozwiązaniem jest użycie opcji zawartości podpowiedzi. Zobacz - http://api.jqueryui.com/tooltip/#option-content

Jaison
źródło
0

Posługiwać się

&#013

Nie powinno być żadnych; postać.

user1464581
źródło
0

jeśli używasz jquery-ui 1.11.4:

var tooltip = $.widget( "ui.tooltip", {
    version: "1.11.4",
    options: {
        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
Replace-->  //return $( "<a>" ).text( title ).html();
by -->      return $( "<a>" ).html( title );
             },
Piotr
źródło
0
AngularJS with Bootstrap UI Tolltip (uib-tooltip), has three versions of tool-tip:

uib-tooltip, uib-tooltip-template i uib-tooltip-html

- uib-tooltip takes only text and will escape any HTML provided
- uib-tooltip-html takes an expression that evaluates to an HTML string
- uib-tooltip-template takes a text that specifies the location of the template

W moim przypadku wybrałem uib-tooltip-html i składa się z trzech części:

  1. konfiguracja
  2. kontroler
  3. HTML

Przykład:

(function(angular) {

//Step 1: configure $sceProvider - this allows the configuration of $sce service.

angular.module('myApp', ['uib.bootstrap'])
       .config(function($sceProvider) {
           $sceProvider.enabled(false);
       });

//Step 2: Set the tooltip content in the controller

angular.module('myApp')
       .controller('myController', myController);

myController.$inject = ['$sce'];

function myController($sce) {
    var vm = this;
    vm.tooltipContent = $sce.trustAsHtml('I am the first line <br /><br />' +
                                         'I am the second line-break');

    return vm;
}

 })(window.angular);

//Step 3: Use the tooltip in HTML (UI)

<div ng-controller="myController as get">
     <span uib-tooltip-html="get.tooltipContent">other Contents</span>
</div>

Więcej informacji można znaleźć tutaj

omostan
źródło
0

U mnie zadziałało używanie .html () zamiast .text (). Na przykład

.html("This is a first line." + "<br/>" + "This is a second line.")
Raj Stha
źródło
0

użycie &#13;powinno działać (testowałem w Chrome , Firefox i Edge ):

let users = [{username: 'user1'}, {username: 'user2'}, {username: 'user3'}];
let favTitle = '';
for(let j = 0; j < users.length; j++)
    favTitle += users[j].username + "&#13;";

$("#item").append('<i title="In favorite users: &#13;' + favTitle + '">Favorite</i>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id = item></div>

Nourein
źródło
0

Cześć, ten kod będzie działał we wszystkich przeglądarkach !! Użyłem dla nowej linii w chrome i safari i ul li dla IE

 function genarateMultiLIneCode(){
        var =values["a","b","c"];
        const liStart = '<li>';
              const liEnd = '</li>';
              const bullet = '&#8226; ';     
              var mergedString = ' ';
              const unOrderListStart='<ul>'
              const unOrderListEnd='</ul>'
              const fakeNewline = '&#013;&#010;';
              for (let i = 0; i < values.length; i++) {
                   mergedString += liStart + bullet + values[i] + liEnd + fakeNewline;
              }
              const tempElement = document.createElement("div");
              tempElement.innerHTML = unOrderListStart + mergedString + unOrderListEnd;    
              return tempElement.innerText;
            }
        }
abhinavxeon
źródło
0

Możesz użyć podpowiedzi bootstrap i nie zapomnij ustawić opcji html na true.

<div id="tool"> tooltip</div>
$('#tool').tooltip({
     title: 'line one' +'<br />'+ 'line two',
     html: true
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
amina
źródło
-1

Po prostu użyj kodu jednostki &#xA;dla podziału wiersza w atrybucie tytułu.

<a title="First Line &#xA;Second Line">Hover Me </a>

Renish Gotecha
źródło
-1

Ten CSS Ci pomoże.

    .tooltip {
      word-break: break-all;
    }

or if you want in one line

    .tooltip-inner {
      max-width: 100%;
    }
Adir Harel
źródło