注意:
根据您的Bootstrap版本(3.3之前或之前),您可能需要一个不同的答案 注意笔记。
当我激活工具提示(悬停在单元格上)或此代码中的弹出窗口时,表格的大小正在增加。我怎么能避免这个?
这里emptyRow - 用100生成tr的函数
<html>
<head>
<title></title>
<script type="text/javascript" language="javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<link type="text/css" rel="stylesheet" href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css">
<script type="text/javascript" language="javascript" src="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.1/bootstrap.min.js"></script>
<style>
#matrix td {
width: 10px;
height: 10px;
border: 1px solid gray;
padding: 0px;
}
</style>
<script>
function emptyRow() {
str = '<tr>'
for (j = 0; j < 100; j++) {
str += '<td rel="tooltip" data-original-title="text"></td>'
}
str += '</tr>'
return str
}
$(document).ready(function () {
$("#matrix tr:last").after(emptyRow())
$("[rel=tooltip]").tooltip();
});
</script>
</head>
<body style="margin-top: 40px;">
<table id="matrix">
<tr>
</tr>
</table>
</body>
</html>
谢谢你的建议!
答案 0 :(得分:88)
注意: Bootstrap 3.3 +
的解决方案
在.tooltip()
来电中,将container
选项设为body
:
$(function () {
$('[data-toggle="tooltip"]').tooltip({
container : 'body'
});
});
或者,您可以使用data-container
属性执行相同的操作:
<p data-toggle="tooltip" data-placement="left" data-container="body" title="hi">some text</p>
这解决了这个问题,因为默认情况下,工具提示有display: block
,并且元素被插入到调用它的位置。由于display: block
,它在某些情况下会影响页面流,即推动其他元素。
通过将容器设置为body元素,工具提示将附加到正文而不是调用它的位置,因此它不会影响其他元素,因为没有任何内容可以按下&#34;向下按下&#34 ;
答案 1 :(得分:86)
注意: Bootstrap 3.0~3.2的解决方案
您需要在td
中创建一个元素并对其应用工具提示,例如this,因为工具提示本身是一个div,当它放在td
之后元素它刹车表布局。
最新版本的Bootstrap引入了此问题。关于GitHub here的修正案正在进行中。希望下一个版本包含固定文件。
答案 2 :(得分:15)
注意: Bootstrap 3.3 +
的解决方案
如果您想在将工具提示应用于<td>
元素时避免中断表格,可以使用以下代码:
$(function () {
$("body").tooltip({
selector: '[data-toggle="tooltip"]',
container: 'body'
});
})
你的html看起来像这样:
<td data-toggle="tooltip" title="Your tooltip data">
Table Cell Content
</td>
这甚至适用于动态加载的内容。例如,与datatables
一起使用答案 3 :(得分:9)
我想为接受的答案添加一些精确度,我决定使用答案格式来提高可读性。
注意: Bootstrap 3.0~3.2的解决方案
现在,wrapping your tooltip in a div is the solution,但如果您希望整个<td>
显示工具提示(因为Bootstrap CSS),则需要进行一些修改。一种简单的方法是将<td>
的填充转换为包装器:
<强> HTML 强>
<table class="table table-hover table-bordered table-striped">
<tr>
<td>
<div class="show-tooltip" title="Tooltip content">Cell content</div>
</td>
</tr>
</table>
JS(jQuery)
$('.show-tooltip').each(function(e) {
var p = $(this).parent();
if(p.is('td')) {
/* if your tooltip is on a <td>, transfer <td>'s padding to wrapper */
$(this).css('padding', p.css('padding'));
p.css('padding', '0 0');
}
$(this).tooltip({
toggle: 'toolip',
placement: 'bottom'
});
});
答案 4 :(得分:1)
如果您将数据表用于表,则将使用完整的表
$('#TableId').DataTable({
"drawCallback": function (settings) {
debugger;
$('[data-toggle="tooltip"]').tooltip({
container: 'body'
});
}
});
答案 5 :(得分:0)
您应该在数据表函数 fnDrawCallback
中初始化工具提示 "fnDrawCallback": function (data, type, full, meta) {
$('[data-toggle="tooltip"]').tooltip({ placement: 'right', title: 'heyo', container: 'body', html: true });
},
并将您的列定义如下
{
targets: 2,
'render': function (data, type, full, meta) {
var htmlBuilder = "<b>" + data + "</b><hr/><p>Description: <br/>" + full["longDescrioption"] + "</p>";
return "<a href='#' class='Name'>" + (data.length > 50 ? data.substr(0, 50) + '…' : data) + "</a>" +
"<sup data-toggle='tooltip' data-original-title=" + htmlBuilder + ">"+
"<i class='ic-open-in-new ic' style='font-size:12px;margintop:-3px;'></i></sup>";
}
},
答案 6 :(得分:0)
如果您对AngularJS使用引导指令,请使用tooltip-append-to-body属性。
<td ng-repeat="column in row.columns" uib-tooltip="{{ ctrl.viewModel.leanings.tooltip }}" tooltip-append-to-body="true"></td>