工具提示的placement 由一个jQueryUI Position 对象控制,默认设置为:
{ my: "left+15 center", at: "right center", collision: "flipfit" }
Position 对象,特别是collision 属性可以更改以强制将控件放置在其他位置。工具提示的默认值为 flipfit,这意味着如果默认值(右侧)不适合它将 flip 向左并尝试该位置,如果不适合与任何东西发生碰撞,尝试通过将控件从窗口边缘移开来适应。结果是它现在与<input> 发生冲突。似乎没有一个选项可以强制长工具提示巧妙地换行。
但是有两种方法可以包装内容:
使用max-width 将自定义CSS 类添加到配置中以强制换行,例如:
JavaScript
$('input').tooltip({
tooltipClass:'tooltip'
});
CSS
.tooltip {
max-width:256px;
}
或者在title属性中插入硬换行符<br/>,例如
title="Lorem ipsum dolor sit amet,<br/>consectetur adipisicing elit"
编辑: 所以看起来 jQueryUI 在 v1.9 和 v1.10 之间更改了工具提示 content 选项(根据 the changelog)。这里有区别供参考:
v1.9.2
content: function() {
return $( this ).attr( "title" );
}
v1.10
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
return $( "<a>" ).text( title ).html();
}
因此,您可以像这样使用.tooltip() 将不会在title 属性中转义<br/> 标记的旧功能放回原处:
$('input').tooltip({
content: function() {
return $(this).attr('title');
}
});
另外,请参阅jsFiddle demo。