Agregar salto de línea dentro de la información sobre herramientas


170

¿Cómo se pueden agregar saltos de línea dentro de una información sobre herramientas HTML?

Intenté usar <br/>y \ndentro de la información sobre herramientas de la siguiente manera:

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

Sin embargo, esto fue inútil y pude ver el texto literal <br/>y \ndentro de la información sobre herramientas. Cualquier sugerencia será de ayuda.


3
He tenido la misma pregunta: stackoverflow.com/questions/3320081/…
San

1
use <pre> data-html = "true" </pre> Ref y gracias a: stackoverflow.com/a/19001875/2278891
Sunit

En asp.net (C # .NET 4.5 Framework), agregar Environment.NewLinetrabajos para agregar un salto de línea desde el lado del código ... sin complicaciones ... sin complicaciones ...
Dan B

Respuestas:


271

Simplemente use el código de entidad &#013;para un salto de línea en un atributo de título.


17
si el código de entidad & # 013; no funciona, prueba & # 10; Estoy usando Linux y Chrome no estoy seguro acerca de otros navegadores
Krishna

3
Intenté esto y funciona cuando lo inyecto usando el elemento de inspección, pero no cuando lo incluyo en mi html y lo implemento con este personaje. ¿Alguna razón obvia que podría estar perdiendo?
Riaan Schutte

1
Para mí &#10no funciona para mí en Windows, Chrome v53. Pero &#013;funcionó bien.
Lucky

9
Acabo de usar ambas versiones, &#013;&#010;parece funcionar bastante bien :)
Phe0nix

66
& # 013; no funciona en Firefox v58. Sin embargo, & # 10 funciona bien. Usar la solución @ Phe0nix de usar ambos saltos de línea según sea necesario funciona bien para que funcione en Chrome, Microsoft Edge y Firefox.
Bastante genial

69

Simplemente agregue un atributo de datos

data-html = "verdadero"

y estás listo para irte.

P.ej. uso:

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

Ha funcionado en la mayoría de los complementos de información sobre herramientas que he probado hasta ahora.


3
data-html = "true" con <br /> en el texto del título funciona perfectamente.
viks

1
Ninguna de las soluciones anteriores funcionó para mí. Pero este funciona bien.
abby

64

El &#013;combinado con el estilo de espacio en blanco: pre-línea; trabajó para mi.


3
Pasé un tiempo tratando de hacer que esto funcione. El hecho de que white-space: pre-line;se necesita el estilo está muy oculto.
Jim D

@JimD ¿a qué clase / elemento se debe aplicar la regla de estilo?
Judah Meek

Para mí, esto funciona bien sin ningún CSS personalizado en la información sobre herramientas.
ST-DDT

2
Este es el que buscas amigos.
Henrik Petterson

3
En realidad, el personaje debería ser &#010;: stackoverflow.com/questions/6502054/…
Henrik Petterson


10

Dar \nentre el texto. Funciona en todos los navegadores.

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

Esto funcionará para mí y se usa en el código detrás.

Espero que esto funcione para usted


10
\n

con el estilo

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

trabajó para mi.


4

Lo encontré. Se puede hacer simplemente haciendo así

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

4

La versión de javascript

Como &#013;(html) es 0D(hexadecimal), esto se puede representar como'\u000d'

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

Adicionalmente,

Compartiendo con ustedes un filtro AngularJS que reemplaza \ncon ese personaje gracias a las referencias en las otras respuestas

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

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

uso

<div title="{{ message | titleLineBreaker }}"> </div>

4

simplemente use \ n en el título y agregue este CSS

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


3

Simplemente agregue data-html = "true"

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

2

es posible agregar saltos de línea dentro de la información sobre herramientas HTML nativa simplemente haciendo que el atributo de título se extienda entre varias líneas.

Sin embargo, recomendaría usar un complemento de información sobre herramientas jQuery como Q-Tip: http://craigsworks.com/projects/qtip/ .

Es simple de configurar y usar. Alternativamente, también hay muchos complementos de información sobre herramientas de JavaScript gratuitos.

editar: corrección en la primera declaración.


2

Para mí, una solución de 2 pasos (combinación de formatear el título y agregar el estilo) funcionó de la siguiente manera:

1) Formatee el titleatributo:

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

2) Agregue este estilo al tipselemento:

white-space: pre-line;

Probado en IE8, Firefox 22 y Safari 5.1.7.


Sin embargo, creo que es complicado tener líneas discontinuas en el código
Fandango68

2

Simplemente agregue este fragmento de código en su script:

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

y por supuesto como se menciona en las respuestas anteriores, data-htmldebería ser "true". Esto le permitirá usar etiquetas html y formatear dentro del valor del titleatributo.


+1, su solución funcionó. mi código de ejemplo: data-toggle="tooltip" data-html="true" title="some string <br/> some string".
Pranesh Janarthanan

Es bueno saber que 👍
código de arriba

1

Bueno, si está utilizando la utilidad Jquery Tooltip , en el archivo Javascript "jquery-ui.js" encuentre el siguiente texto:

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

y poner por encima de eso

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

Espero que esto también funcione para ti.


1

Entonces, si está utilizando bootstrap4, esto funcionará.

<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>

Si está utilizando un proyecto de Django, también podemos mostrar datos dinámicos en información sobre herramientas como:

<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>

0

La solución para mí fue http://jqueryui.com/tooltip/ :

Y aquí el código (la parte del script que hace que <br/>Works sea "contenido:"):

HEAD HTML

<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>

Control ASPX o HTML

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

Espero que esto ayude a alguien


0

Más importante que Jquery UI 1.10 no es compatible con el uso de la etiqueta html dentro del atributo title porque no es html válido.

Entonces, la solución alternativa es utilizar la opción de contenido de información sobre herramientas. Consulte: http://api.jqueryui.com/tooltip/#option-content



0

si está utilizando 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 );
             },

0
AngularJS with Bootstrap UI Tolltip (uib-tooltip), has three versions of tool-tip:

uib-tooltip, uib-tooltip-template y 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

En mi caso, opté por uib-tooltip-html y hay tres partes:

  1. configuración
  2. controlador
  3. HTML

Ejemplo:

(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>

Para más información, consulte aquí


0

Usar .html () en lugar de .text () funcionó para mí. Por ejemplo

.html("This is a first line." + "<br/>" + "This is a second line.")

0

el uso &#13;debería funcionar (lo he probado en Chrome , Firefox y 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>


0

¡Hola, este código funcionará en todos los navegadores! Utilicé para la nueva línea en Chrome y Safari y ul li para 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;
            }
        }

0

Puede usar la información sobre herramientas de bootstrap y no olvide establecer la opción html en 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>

-1

Simplemente use el código de entidad &#xA;para un salto de línea en un atributo de título.

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


-1

Este CSS te ayudará.

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

or if you want in one line

    .tooltip-inner {
      max-width: 100%;
    }
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.