【问题标题】:jQuery tooltip add line breakjQuery 工具提示添加换行符
【发布时间】:2013-01-14 00:09:34
【问题描述】:

所以,我想获取包含多个<br/> 的 div 的内容,然后使用 jQuery 工具提示小部件将其作为标题属性传递。我希望这些线条出现在工具提示内的另一个下方。谢谢。到目前为止的代码是:

CSS

.Lines {
    width: 125px;
    height:20px;
    overflow:auto;
}

JavaScript

$(function () {
    $(document).tooltip();

    $(".Lines").hover(function () {
        IaTxt = $(this).html()

        $(this).prop('title', IaTxt)

    })
});

HTML

<div class="Lines">
    First line.
    <br/>Second line.
    <br/>Third line!
    <br/>Fourth line?
</div>

【问题讨论】:

    标签: javascript jquery html jquery-ui jquery-plugins


    【解决方案1】:

    有一个纯 CSS 解决方案。使用 \n 换行,并添加此 CSS 样式:

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

    如果您想保留空格,也可以使用 pre 或 pre-wrap 代替 pre-line。 见https://developer.mozilla.org/en-US/docs/Web/CSS/white-space

    【讨论】:

    • 迄今为止此页面上最简单的解决方案。
    • 对我来说也是最简单的解决方案。我的文本已经包含 \n 所以我只需要 CSS。谢谢!
    • 我的 Jquery Tooltip 版本的类选择器不同:` .tooltip-inner { white-space: pre-line; } ` 但原理相同!
    【解决方案2】:

    只需在标题属性中使用实体&amp;#10; 换行即可。

    【讨论】:

    • 我将如何在我的代码中具体实现它?我通过 jQuery 设置标题属性
    • 在你想要换行的地方添加文本。或替换为
      标签
    • 我不知道你是否理解我最初的问题。我想获取 div [参见示例 div] 的内容并将其显示为带有 jQ​​uery 工具提示插件的标题。在那个 div 中我已经有 &lt;br/&gt; 并且我希望换行符出现在 &lt;br/&gt; 所在的工具提示中。
    • 这只是我告诉的。你用 替换
      yourVariable.replace("&lt;br/&gt;","&amp;#10;");
    • 你必须和这个一起使用: .ui-tooltip { white-space: pre-line; }
    【解决方案3】:

    这是我用最新的 jquery / jqueryui 做的技巧(假设你想要工具提示的所有项目都有类'jqtooltip',它们有标题标签,并且标题有一个管道字符作为行分隔符:

    $('.jqtooltip').tooltip({ 
      content: function(callback) { 
         callback($(this).prop('title').replace('|', '<br />')); 
      }
    });
    

    【讨论】:

    • 这只替换第一个'|'。
    【解决方案4】:

    您可以使用工具提示小部件的“内容”选项。另见:

    http://jqueryui.com/tooltip/#custom-content

    简短示例:

      $(function() {
        $( document ).tooltip({
          content: function() {
            return 'foo'
          }
        });
      });
    

    【讨论】:

    • 你能举一个实际的例子,这将实现我的目标吗?谢谢
    • 在您的情况下,字符串 'foo' 可以替换为 Iatext
    【解决方案5】:

    您可以将 HTML 直接输入到 Title 属性中,然后简单地调用以下命令:

    $(document).tooltip({
      content: function (callback) {
         callback($(this).prop('title'));
      }
    });
    

    这样你的 HTML 被渲染而不是转义和字面书写。

    【讨论】:

    • 这就是答案。时期。请投票以将此答案移到顶部。
    • 悬停后工具提示不会隐藏。
    【解决方案6】:

    最好用这个:

    $(document).tooltip({
       content: function () {
         return $( this ).prop( 'title' ).replace( '|', '<br />' );
       }
    });
    

    function(callback) 我遇到了工具提示问题,它没有关闭

    【讨论】:

    • 如果您有 1 个换行符,那就太好了。对于倍数,请务必使用全局选项。 .replace( /\|/g, '&lt;br /&gt;' );
    • 请查看此页面的 JDandChips 答案,无需使用自定义字符。您可以在 title 属性中使用 html,只需更改以下函数即可: return $( this ).prop( 'title');
    【解决方案7】:

    我用过这个:

            $("[title]").each(function(){
                $(this).tooltip({ content: $(this).attr("title")});
            });
    

    这意味着所有具有title属性的元素都将使用jquery工具提示,并且工具提示内容将使用title属性的值。 内容允许html。

    【讨论】:

    • 在用它设置标题属性之前,我必须在我的文本中将 /n 替换为
      。但是现在我找到了一个更好的解决方案,我用
       标记将它包装起来,并保留换行符和制表符。
    【解决方案8】:

    我选择了 ScottRFrost 答案的修改版本。他的示例的问题是 .replace 仅替换字符串中字符的第一个实例。这是一个修改后的版本,它将使用正则表达式的 /g(全局)来修改整个字符串中字符的所有实例。

    $('.jqtooltip').tooltip({ 
       content: function (callback) {
          callback($(this).prop('title').replace(new RegExp("\\|", "g"), '<br />'));
       }
    });
    

    【讨论】:

    • 您也可以使用正则表达式模式,例如:.replace(/\|/g, '&lt;br /&gt;')
    猜你喜欢
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 2015-05-31
    • 1970-01-01
    相关资源
    最近更新 更多