Добавить разрыв строки в подсказках


170

Как можно добавить разрывы строк в подсказке HTML?

Я попытался использовать <br/>и \nв подсказке следующим образом:

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

Однако это было бесполезно, и я мог видеть буквальный текст <br/>и \nв подсказке. Любые предложения будут полезны.


3
У меня был тот же вопрос: stackoverflow.com/questions/3320081/…
San

1
используйте <pre> data-html = "true" </ pre> Ref и спасибо: stackoverflow.com/a/19001875/2278891
Sunit

В asp.net (C # .NET 4.5 Framework) добавление Environment.NewLineработает, чтобы добавить разрыв строки со стороны кода ... без суеты ... без суеты ...
Дэн Б

Ответы:


271

Просто используйте код объекта &#013;для переноса строки в атрибуте title.


17
если код объекта & # 013; не работает, попробуйте & # 10; я использую Linux и Chrome, не уверенный в других браузерах
Кришна

3
Я попробовал это, и это работает, когда я внедряю его с помощью элемента inspect, но не тогда, когда я включаю его в свой html и внедряю с этим символом. Есть какая-то очевидная причина, по которой я могу пропустить?
Риан Шутте

1
Для меня &#10не работают для меня в Windows, Chrome v53. Но &#013;работал нормально.
Счастливчик

9
Я просто использовал обе версии, &#013;&#010;кажется, работает довольно хорошо :)
Phe0nix

6
& # 013; не работает в Firefox v58. Однако & # 10 работает нормально. Использование @ Phe0nix решения с использованием обоих разрывов строки при необходимости хорошо работает, чтобы заставить его работать в Chrome, Microsoft Edge и Firefox.
Довольно прохладно

69

Просто добавьте атрибут данных

данный HTML = «истина»

и ты в порядке.

Например. использование:

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

Он работал в большинстве плагинов всплывающей подсказки, которые я пробовал на данный момент.


3
data-html = "true" с <br /> в тексте заголовка работает отлично.
Викс

1
Ни одно из вышеперечисленных решений не помогло мне. Но этот работает хорошо.
Эбби

64

В &#013;сочетании со стилем пробел: pre-line; работал на меня.


3
Я потратил некоторое время, пытаясь заставить это работать. Тот факт, что white-space: pre-line;стиль нужен очень скрыт.
Джим Д

@JimD к какому классу / элементу нужно применить правило стиля?
Иуда Мик

Для меня это прекрасно работает без каких-либо пользовательских CSS на всплывающих подсказках.
ST-DDT

2
Это тот, кого вы ищете для друзей.
Хенрик Петтерсон,

3
На самом деле, персонаж должен быть &#010;: stackoverflow.com/questions/6502054/…
Хенрик Петтерсон,

30

Этот CSS, наконец, работал для меня в сочетании с переводом строки в моем редакторе:

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

Найдено здесь: Как сделать так, чтобы всплывающие подсказки в Twitter содержали несколько строк?


@ Дэн пришел сюда в поисках помощи. Мой текст всплывающей подсказки продолжался за пределами окна. Это сработало! +1
IRGeekSauce

11
\n

со стилем

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

работал на меня.


10

Дайте \nмежду текстом. Работает на всех браузерах.

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

Это будет работать для меня, и это используется в коде позади.

Надеюсь, это будет работать для вас



4

Версия JavaScript

Поскольку &#013;(html) равно 0D(hex), это можно представить как'\u000d'

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

К тому же,

Ребята, поделитесь с вами фильтром AngularJS, который заменяет \nэтот символ, благодаря ссылкам в других ответах.

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

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

использование

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

4

просто используйте \ n в заголовке и добавьте этот CSS

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



2

можно добавить разрывы строк во встроенные подсказки HTML, просто распространив атрибут title по строкам с несколькими строками.

Однако я бы порекомендовал использовать плагин для всплывающей подсказки jQuery, такой как Q-Tip: http://craigsworks.com/projects/qtip/ .

Это просто настроить и использовать. В качестве альтернативы существует множество бесплатных плагинов для всплывающей подсказки javascript.

редактировать: исправление в первом утверждении.


2

Для меня двухэтапное решение (комбинация форматирования заголовка и добавления стиля) работает следующим образом:

1) Отформатируйте titleатрибут:

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

2) Добавьте этот стиль к tips элементу:

white-space: pre-line;

Протестировано в IE8, Firefox 22 и Safari 5.1.7.


Я думаю, что это грязно, иметь в коде прерывистые строки
Fandango68

2

Просто добавьте этот фрагмент кода в ваш скрипт:

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

и конечно, как уже упоминалось выше, ответы data-htmlдолжны быть "true". Это позволит вам использовать HTML-теги и форматирование внутри значения titleатрибута.


+1, ваше решение сработало. мой пример кода: data-toggle="tooltip" data-html="true" title="some string <br/> some string".
Пранеш Джанартанан

Приятно слышать, что code
это

1

Хорошо, если вы используете утилиту Jquery Tooltip, то в файле Javascript "jquery-ui.js" найдите следующий текст:

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

и поставить над этим

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

Я надеюсь, что это также будет работать для вас.


1

Так что, если вы используете bootstrap4, это будет работать.

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

Если вы используете в проекте Django, мы также можем отображать динамические данные во всплывающих подсказках, например:

<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

Решение для меня было http://jqueryui.com/tooltip/ :

А вот код (часть скрипта, которая делает <br/>Works - это «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>

ASPX или HTML контроль

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

Надеюсь, это поможет кому-то


0

Более поздний, чем Jquery UI 1.10, не поддерживает использование тега html внутри атрибута title, потому что это недопустимый html.

Таким образом, альтернативное решение заключается в использовании всплывающей подсказки. См. Http://api.jqueryui.com/tooltip/#option-content.



0

если вы используете 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 и 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

В моем случае я выбрал uib-tooltip-html, и он состоит из трех частей:

  1. конфигурация
  2. контроллер
  3. HTML

Пример:

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

Для получения дополнительной информации, пожалуйста, проверьте здесь


0

Использование .html () вместо .text () работало для меня. Например

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

0

Использование &#13;должно работать (я тестировал в Chrome , Firefox и 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

Привет, этот код будет работать во всех браузерах! Я использовал для новой строки в Chrome и Safari и UL li для 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

Вы можете использовать подсказку начальной загрузки, и не забудьте установить для параметра html значение 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>


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.