Layui按钮更多选项,表格按钮更多选项,layui更多按钮操作,下拉组件dropdown

40 篇文章 0 订阅
30 篇文章 4 订阅

前言

基于jquery和layui的更多按钮操作,在表格中表头和表行有时候按钮操作过多的时候我们就需要使用折叠操作了,实现方式如下

实现

如果是老版本layui,是没有下拉组件dropdown的

前往下载(包括使用方式):https://www.microanswer.cn/blog/74
【此组件和下面方式有所不同,使用此组件前往路径中的文档即可】

解压后得到
在这里插入图片描述
注意这里的css路径,如果不用外网的,就改成本地解压的dropdown.css即可
在这里插入图片描述
引入组件
在这里插入图片描述

方式一

由于官方给的,和其他框架带的修改起来不方便就自己写了一种,复制过去就可以使用

效果图
在这里插入图片描述

css中

	.lay-btn-all .layui-icon{
		display: inline-block;
		transition: all 0.3s;
	 	-webkit-transition: all 0.3s;
	 	font-size: 14px!important;
	}
	.lay-icon-this{
		transform: rotate(180deg);
	}
	.lay-nav-child{
		display: none;
		background: #ffff;
	    width: 140px;
	    text-align: center;
	    position: absolute;
	    margin-top: 5px;
	    box-shadow: #5a5858 0px 0px 1px 0px;
	    border-radius: 5px;
	}
	.lay-nav-child-show{
		display: block;
			
	}
	.lay-nav-child dd{
		padding: 10px;
	}
	.lay-nav-child .layui-btn{
		margin: 5px 0px;
		width: 100%;
	}

JS中

方式一

这个是使用移入移开方式的,方式二是点击的(推荐方式二)

$(function(){
	
	// 更多按钮操作事件==========================================================================
	// 更多-鼠标放入事件
	$(document).on("mouseover", ".lay-btn-all", function(ev){
		// 防止子级元素阻挡事件造成失效
		var oEvent = ev || window.event;
        if(toAffect(this, oEvent, 'mouseover')){
        	var cls = $(".lay-nav-child").attr("class");
        	if(cls.indexOf("lay-nav-child-show") == -1){
        		$(this).find(".layui-icon").addClass("lay-icon-this");
        		$(this).next(".lay-nav-child").addClass("lay-nav-child-show");
        	}
        }
	})
	
	// 更多-鼠标移开事件
	$(document).on("mouseout", ".lay-btn-all", function(ev){
		// 防止子级元素阻挡事件造成失效
		var oEvent = ev || window.event;
	    if(toAffect(this, oEvent, 'mouseout')){
	    	var y_$this = $(this);
	    	setTimeout(function(){
	    		var id = y_$this.next(".lay-nav-child").attr("lay-id");
	        	if(!id || id == 0){
	        		y_$this.find(".layui-icon").removeClass("lay-icon-this");
	        		y_$this.next(".lay-nav-child").removeClass("lay-nav-child-show");
	        	}
			}, 500);
		}
	})
	
	// 隐藏按钮-鼠标放入事件
	$(document).on("mouseover", ".lay-nav-child", function(ev){
		// 防止子级元素阻挡事件造成失效
		var oEvent = ev || window.event;
        if(toAffect(this, oEvent, 'mouseover')){
        	var id = $(this).attr("lay-id");
        	if(id != 1){
        		$(this).attr("lay-id", 1);
        	}
        }
	})
	
	// 隐藏按钮-鼠标移开事件
	$(document).on("mouseout", ".lay-nav-child", function(ev){
		// 防止子级元素阻挡事件造成失效
		var oEvent = ev || window.event;
	    if(toAffect(this, oEvent, 'mouseout')){
	    	$(this).removeClass("lay-nav-child-show");
	    	$(this).attr("lay-id", 0);
	    	$(this).prev(".lay-btn-all").find(".layui-icon").removeClass("lay-icon-this");
		}
	})
	
	// 点击body关闭更多按钮,及点击按钮不做关闭操作=====================================================================
	$("body").click(function(ev){
		var e = ev || window.event;
	    var target = e.target || e.srcElement;
	    if(target.className.indexOf("lay-btn-all") != -1 || target.className.indexOf("lay-nav-child") != -1) {
	        return;
	    }else{
	    	var y_$this = $(".lay-btn-all");
			var id = y_$this.next(".lay-nav-child").attr("lay-id");
	    	if(!id || id == 0){
	    		y_$this.find(".layui-icon").removeClass("lay-icon-this");
	    		y_$this.next(".lay-nav-child").removeClass("lay-nav-child-show");
	    	}
	    }
	})
	
	
})

/**
 * --------------------------------------------------------------------------------------
 * 父级移入移出事件阻止子级元素遮挡后失效
 * @param {Object} obj1
 * @param {Object} ev
 * @param {Object} event
 */
function toAffect(obj1, ev, event){
    var obj2 = null;
    if(ev.relatedTarget){
        obj2 = ev.relatedTarget;
    }else{
        if(event == 'mouseover'){
            obj2 = ev.fromElement;
        } else if(event == 'mouseout'){
            obj2 = ev.toElement;
        }
    }
    if(obj1.contains){
        return !obj1.contains(obj2);
    }else{
        return !!(obj1.compareDocumentPosition(obj2)-20)&&a!=b;
    }
}
		

方式二

$(function(){
	
	// 更多按钮操作事件==========================================================================
	// 更多-鼠标点击事件
	$(document).on("click", ".lay-btn-all", function(ev){
		var cls = $(".lay-nav-child").attr("class");
    	if(cls.indexOf("lay-nav-child-show") == -1){
    		$(this).find(".layui-icon").addClass("lay-icon-this");
    		$(this).next(".lay-nav-child").addClass("lay-nav-child-show");
    	}
	})
	
	// 隐藏按钮-鼠标点击事件=======================================================================================
	$(document).on("click", ".lay-nav-child", function(ev){
		$(this).removeClass("lay-nav-child-show");
    	$(this).prev(".lay-btn-all").find(".layui-icon").removeClass("lay-icon-this");
	})
	
	// 点击body关闭更多按钮,及点击按钮不做关闭操作=====================================================================
	$("body").click(function(ev){
		var e = ev || window.event;
	    var target = e.target || e.srcElement;
	    if(target.className.indexOf("lay-btn-all") != -1 || target.className.indexOf("lay-nav-child") != -1) {
	        return;
	    }else{
	    	var y_$this = $(".lay-btn-all");
			var id = y_$this.next(".lay-nav-child").attr("lay-id");
	    	if(!id || id == 0){
	    		y_$this.find(".layui-icon").removeClass("lay-icon-this");
	    		y_$this.next(".lay-nav-child").removeClass("lay-nav-child-show");
	    	}
	    }
	})
	
	
})

html中

<div id="toolberLeft" style="display:none;">
	<a class="layui-btn layui-btn-sm lay-btn-all"> 
		更多操作
		<i class="layui-icon layui-icon-down layui-nav-more"></i>
	</a>
	<dl class="lay-nav-child layui-anim layui-anim-upbit">
		<dd>
			<button class="layui-btn layui-btn-sm" lay-event="add">
               	<i class="layui-icon layui-icon-add-circle"></i>新增
           	</button>
           	<button class="layui-btn layui-btn-sm layui-btn-warm" lay-event="edit">
               	<i class="layui-icon layui-icon-edit"></i>编辑
          	</button>
           	<button class="layui-btn layui-btn-sm layui-btn-danger" lay-event="delete">
               	<i class="layui-icon layui-icon-delete"></i>删除
           	</button>
          	<button class="layui-btn layui-btn-sm layui-btn-normal"  lay-event="search">
              	<i class="layui-icon layui-icon-search" style="padding-left:5px;"></i>查询
          	</button>
		</dd>
	</dl>
</div>

此操作用于动态表格头部

tableId=table.render({
	elem: '#table_data'
	,height : 'full-120'
	,skin:'line'
	,even:true
	,url: ''
	,page: true //开启分页
	,size:"sm"
	,toolbar : "#toolberLeft"
})

方式二

【本人修改版】效果图
在这里插入图片描述
表格模式下,我这里使用userId做唯一【本人修改版】

<!-- 表格操作列 -->
<script type="text/html" id="app-table-bar">
    <a class="layui-btn layui-btn-xs" data-dropdown="#userTbDrop_{{d.userId}}" no-shade="true">更多<i
            class="layui-icon layui-icon-drop"></i></a>
    <ul class="dropdown-menu-nav dropdown-bottom-right layui-hide " id="userTbDrop_{{d.userId}}">
        <li><button class="layui-btn  layui-btn-xs" lay-event="edit">修改</button></li>
        <li><button class="layui-btn  layui-btn-xs" lay-event="reset-pwd">重置密码</button></li>
        <li><button class="layui-btn  layui-btn-xs" lay-event="del">删除</button></li>
        <li><button class="layui-btn  layui-btn-xs" lay-event="power">授权</button></li>
    </ul>
</script>

【原版】效果图
在这里插入图片描述
原版标签

<script type="text/html" id="app-table-bar">
    <ul class="dropdown-menu-nav dropdown-bottom-right layui-hide " id="userTbDrop_{{d.userId}}">
        {{#  if(d.realAuth!=1){ }}
        <li><a lay-event="rz"><i class="layui-icon layui-icon-star"></i>实名认证</a></li>
        {{#  } }}
        <li><a lay-event="yy"><i class="layui-icon layui-icon-engine"></i>订购管理</a></li>
    </ul>
</script>

这是我修改的样式【本人修改版使用】

    .dropdown-menu-nav .layui-btn{
        width: 100%;
    }
    .dropdown-menu-nav li{
        padding: 2px 4px;
    }

layui引入【通用】
在这里插入图片描述
表格js【通用】
在这里插入图片描述
:我这里使用的是Ruo Yi框架
说明:不仅可以用在表格中,可以把标签块拿出来使用,主要是标签ID唯一

镜像官网例子:https://zengjin.work/layui/web/demo/dropdown.html
相关组件:https://www.microanswer.cn/blog/74

方式三

当然,也可以使用这种方式,需要稍微改一下样式

<ul class="layui-nav">
  <li class="layui-nav-item">
    <a href="javascript:;">子级</a>
    <dl class="layui-nav-child">
      <dd><a href="">菜单1</a></dd>
      <dd><a href="">菜单2</a></dd>
      <dd><a href="">菜单3</a></dd>
    </dl>
  </li>
</ul>
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值