javascript - 带有大量内容的 jQuery 工具提示
问题描述
我使用 jQuery Tooltip Widget 来显示内容非常大的工具提示。如果内容大于工具提示窗口的大小,则仅显示内容的末尾。
我正在寻找一种方法来强制工具提示小部件显示内容的开头(而不是内容的结尾)
https://api.jqueryui.com/tooltip/
例子:
.mytooltip {
width: 300px;
border-top: solid 1px #BBBBBB;
border-bottom: solid 1px #444444;
padding: 5px 20px;
border-radius: 0;
box-shadow: 0 0 4px grey;
margin: 2px;
font-stretch: condensed;
white-space: pre-line;
}
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>jQuery UI Tooltip - Default functionality</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
$( function() {
$( document ).tooltip({
tooltipClass: "mytooltip",
});
} );
</script>
</head>
<body>
<p>This is a long website</p>
<p>This is a long website</p>
<p>This is a long website</p>
<p>This is a long website</p>
<p><a href="#" title="Line 1 of long text. 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Long text 
 Last line of long text">Tooltip</a> </p>
</body>
</html>
解决方案
您需要将content
选项用作函数。由于您添加"\r"
回车,这是一种非常不常见的方法,您可以将其用作分隔符并将文本拆分为数组。然后,您可以切掉不想显示的部分并将其重新加入。
JavaScript
$(function() {
var toolTipMax = 10;
function chunk(s){
var dl = "\r";
if(s.indexOf("\r\n") > 1){
dl = "\r\n";
} else if(s.indexOf("\r") < 0 && s.indexOf("\n") > 1){
dl = "\n";
}
return s.split(dl);
}
$("body").tooltip({
tooltipClass: "mytooltip",
content: function(){
var c = $(this).attr("title");
var sArr = chunk(c);
var part = sArr.slice(0,toolTipMax);
return part.join("<br />");
}
});
});
工作示例:https ://jsfiddle.net/Twisty/6h1oqn8s/
考虑 Windows 使用CR
和NL
( "\r\n"
) 作为行尾 (EOL),而 Linux 仅使用NL
( "\n"
) 作为 EOL。
推荐阅读
- macos - MacOS - 请求音频/相机权限 - 显示错误的应用程序标题?
- java - 使用 SMTP 为 SendMail 函数编写单元测试
- javascript - 对异步函数执行测试时如何处理阻塞?
- flutter - 语法荧光笔不会展开以显示所有代码
- dexie - 添加主键作为参数时,Dexiedb Put 方法不起作用
- python - 如何在注册 Django 时检索用户 IP 地址、城市、国家/地区?
- python-3.x - 我如何获得这个输出?
- php - 使用 twilio 代理 api 进行通话录音
- formatting - 我可以使用 openpxl 查找工作表中的所有空白(空单元格)并将 PatternFill 应用于
- php - 路由问题:Laravel 5.8 中不存在类控制器