Layui的table实现鼠标移入单元格后tips弹框提示

1、问题概述?

在开发中,有时候需要展示的内容非常的多,这个时候就需要通过tips,弹框显示出完整的内容。

**解决办法:**使用jQuery+layui-table方式实现。

效果如下:

框架的大小,位置,颜色可以更改

2、实现方式

2.1、配置table的相关属性

案例从官网中来

重点:给返回值加上class属性:<div class='tipsfun'>"+data.sign+"</div>

html 复制代码
cols: [[ //标题栏
      {field: 'id', title: 'ID', width: 80, sort: true},
      {field: 'username', title: '用户', width: 120},
      {field: 'sign', title: '签名', minWidth: 160,templet:function(data){
		  return "<div class='tipsfun'>"+data.sign+"</div>";
	  }},
      {field: 'sex', title: '性别', width: 80},
      {field: 'city', title: '城市', width: 100},
      {field: 'experience', title: '积分', width: 80, sort: true}
    ]]

2.2、为class="tipsfun"加入鼠标事件

【1、在jquery的ready中初始化即可】

使用jQuery的方式为又class="tipsfun"加入鼠标移入事件和鼠标移出事件

html 复制代码
$(function(){
	var laytips="";
	//鼠标进入,获取当前内容并弹框显示
	$(".tipsfun").on("mouseover",function(){
		var currentText=$(this).text();
		laytips=layer.tips(currentText,this,{
			tips:[1, '#000'],//设置tips的类型和颜色
			time:30000,//tips默认显示时长
			area:['300px','100px']//设置tip的宽高
		})
	});
	//鼠标移开后关闭tips
	$(".tipsfun").on("mouseout",function(){
		layer.close(laytips);
	});	
	
});

【2、在layui table中的done函数中初始化也可以】

因为:done是在数据渲染完毕的回调函数

time:定义弹框默认显示的时长,毫秒单位

area:设置弹框的显示宽高

tips:显示弹框的类型和颜色

javascript 复制代码
	done:function(res,curr,count){
		var laytips="";
		//鼠标进入,获取当前内容并弹框显示
		$(".tipsfun").on("mouseover",function(){
			var currentText=$(this).text();
			laytips=layer.tips(currentText,this,{
				tips:[1, '#000'],//设置tips的类型和颜色
				time:30000,//tips默认显示时长
				area:['300px','100px']//设置tip的宽高
			})
		});
		//鼠标移开后关闭tips
		$(".tipsfun").on("mouseout",function(){
			layer.close(laytips);
		});
		
	},

3、完整代码

将代码中的css和js换成你自己的文件。

jquery使用的是1.8或更高版本。

layui使用最新版本就行

html 复制代码
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Demo</title>
  <!-- 请勿在项目正式环境中引用该 layui.css 地址 -->
  <link href="layui/css/layui.css" rel="stylesheet">
</head>
<body>
<table class="layui-hide" id="ID-table-demo-data"></table>
  
<!-- 请勿在项目正式环境中引用该 layui.js 地址 -->
<script src="layui/layui.js"></script>
<script src="jquery-1.8.0.min.js"></script>
<script>
layui.use('table', function(){
  var table = layui.table;
  
  // 已知数据渲染
  var inst = table.render({
    elem: '#ID-table-demo-data',
    cols: [[ //标题栏
      {field: 'id', title: 'ID', width: 80, sort: true},
      {field: 'username', title: '用户', width: 120},
      {field: 'sign', title: '签名', minWidth: 160,templet:function(data){
		  return "<div class='tipsfun'>"+data.sign+"</div>";
	  }},
      {field: 'sex', title: '性别', width: 80},
      {field: 'city', title: '城市', width: 100},
      {field: 'experience', title: '积分', width: 80, sort: true}
    ]],
    data: [{ // 赋值已知数据
      "id": "10001",
      "username": "张三1",
      "sex": "男",
      "city": "浙江杭州",
      "sign": "人生恰似一场修行",
      "experience": "116"
    }, {
      "id": "10002",
      "username": "张三2",
      "sex": "男",
      "city": "浙江杭州",
      "sign": "人生恰似一场修行",
      "experience": "12",
      "LAY_CHECKED": true
    }, {
      "id": "10003",
      "username": "张三3",
      "sex": "男",
      "city": "浙江杭州",
      "sign": "人生恰似一场修行",
      "experience": "65"
    }, {
      "id": "10004",
      "username": "张三4",
      "sex": "男",
      "city": "浙江杭州",
      "sign": "人生恰似一场修行",
      "experience": "777"
    }, {
      "id": "10005",
      "username": "张三5",
      "sex": "男",
      "city": "浙江杭州",
      "sign": "人生恰似一场修行",
      "experience": "86"
    }, {
      "id": "10006",
      "username": "张三6",
      "sex": "男",
      "city": "浙江杭州",
      "sign": "人生恰似一场修行",
      "experience": "12"
    }, {
      "id": "10007",
      "username": "张三7",
      "sex": "男",
      "city": "浙江杭州",
      "sign": "人生恰似一场修行",
      "experience": "16"
    }, {
      "id": "10008",
      "username": "张三8",
      "sex": "男",
      "city": "浙江杭州",
      "sign": "人生恰似一场修行",
      "experience": "106"
    }],
    //skin: 'line', // 表格风格
    //even: true,
    page: true, // 是否显示分页
    limits: [5, 10, 15],
    limit: 5 // 每页默认显示的数量
  });
});

$(function(){
	var laytips="";
	//鼠标进入,获取当前内容并弹框显示
	$(".tipsfun").on("mouseover",function(){
		var currentText=$(this).text();
		laytips=layer.tips(currentText,this,{
			tips:[1, '#000'],//设置tips的类型和颜色
			time:30000,//tips默认显示时长
			area:['300px','100px']//设置tip的宽高
		})
	});
	//鼠标移开后关闭tips
	$(".tipsfun").on("mouseout",function(){
		layer.close(laytips);
	});

	
});

</script>


</body>
</html>
相关推荐
一个心烑4 天前
Layui结合springboot读取返回值,前端展示简单示例
前端·spring boot·layui
djk888810 天前
layui zTree 控件 AJAX绑定 点击tree事件 获取tree值
ajax·okhttp·layui
猫猫不是喵喵.15 天前
layui表单项次大数据量导入并提交
前端·javascript·layui
医疗信息化王工20 天前
基于ASP.NET Core的住院日志统计系统设计与实现
后端·layui·asp.net core·npoi·dapper
Purgatory0011 个月前
layui select重新渲染
前端·layui
滴滴答答哒1 个月前
layui表格头部按钮 加入下拉选项
前端·javascript·layui
滴滴答答哒1 个月前
layui响应式表单上下结构
前端·javascript·layui
djk88882 个月前
支持手机屏幕的layui后台html模板
前端·html·layui
EQ-雪梨蛋花汤2 个月前
【踩坑记录】使用 Layui 框架时解决 Unity WebGL 渲染在 Tab 切换时黑屏问题
unity·layui·webgl
Southern Wind3 个月前
从零封装一套企业级表格组件库 - 基于 Layui 的实战教程
前端·javascript·layui·jquery