layui实现tab的添加拒绝重复的方法


Posted in Javascript onSeptember 04, 2019

layui中tab的添加:重复添加,没有自动跳转肯定让你烦了很久吧,我也是花了很久才解决的

前提是这样的:我点击不同按钮生成对应tab,而且再点击前已经有一个tab了(比如说:‘首页‘,个人需求而已)

我的思路是这样的:每添加一个tab用链表存储其id,通过id判断是否存在,并确定是添加tab还是跳转到指定tab。

删除时,监听tab的删除,然后从链表里删除对应id。但是在element.on('tabDelete',function(data){});中得不到你删除tab的id。有幸的是,能得到下标:data.index。我用其表示链表中的‘第几个元素',因为data.index的值是“流动”的,以这种方式表示(考虑到操作的方式)很适合用链表来形容(建议你自己console.log(data.index)来看看)。

好了,上代码

list.js:我把它写在了公共类里,你按照你自己的需求来

function Node(v){
  this.value=v;
  this.next=null;
 }
function ArrayList(){
	 this.head=new Node(null);
	  this.tail = this.head;
	  //在尾部添加节点
	  this.append=function(v){
	   node = new Node(v);
	   this.tail.next=node;
	   this.tail=node;
	  }
	  //在指定位置插入
	  this.insertAt=function(ii,v){
	   node = new Node(v);
	   //找到位置的节点
	   tempNode=this.head;
	   for(i=0;i<ii;i++){
	    if(tempNode.next!=null){
	     tempNode=tempNode.next;
	    }else{
	     break;
	    }
	   }
	   node.next=tempNode.next;
	   tempNode.next = node;
	  }
	  //删除指定节点
	  this.removeAt=function(ii){
	   node1=this.head; //要删除节点的前一个节点
	   for(i=0;i<ii;i++){
	    if(node1.next!=null){
	     node1=node1.next;
	    }else{
	     break;
	    }
	   }
	   node2=node1.next; //要删除的节点
	   if(node2!=null){
	    node1.next = node2.next;
	    if(node2.next==null){
	      this.tail=node1;
	     }
	   }
	  }
	  //查找值
	  this.find=function(v){
	  	 var nodefin=this.head;
	  	  while(nodefin.value!=v){
	  	  	if(nodefin.next!=null){
	  	      nodefin=nodefin.next;
	  	  	}else{break;}
	  	  }
	  	  return nodefin;
	  }
	  //查找某个节点的值
	  this.findv=function(ii){
	  	var nodefv = this.head;
	  	for(var i =0;i<ii;i++){
	  		if(nodefv.next!=null){
	  			nodefv=nodefv.next;
	  		}
	  	}
	  	return nodefv;
	  }
	  //显示连表中的值
	  this.show=function()
	  {
	  	var Node=this.head;
	  	while(Node!=null)
	  		{
	  		 console.log(Node.value);
	  		 Node=Node.next;
	  		}
	  }
}

js:

/**
  * 点击节点添加tab
  * title:选项卡标题,id:选项卡的id,url:选项卡所显示的内容《用ifream》
  */
 var arry = new ArrayList();
 arry.append("xtsy");//这就是我的首页,你如果不需要的话,删除即可
 function tabAdd(title,id,url)
 {
  //判断tab是否存在
  if(arry.find(id).value!=id){
   element.tabAdd('tab', {
     title: title //用于演示
     ,content:"<iframe src='"+ url
     + "' frameborder='0' style='width:100%;height:470px;'></iframe>"
     ,id:id
    });
   arry.append(id);
  } 
  //切换tab
 element.tabChange('tab',id);
 }
//监听tab删除
 element.on('tabDelete', function(data){
  arry.removeAt(data.index);
 });

以上这篇layui实现tab的添加拒绝重复的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js Array对象的扩展函数代码
Apr 24 Javascript
二叉树先序遍历的非递归算法具体实现
Jan 09 Javascript
javascript禁止超链接跳转的方法
Feb 02 Javascript
原生js实现autocomplete插件
Apr 14 Javascript
animate 实现滑动切换效果【实例代码】
May 05 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
May 10 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
Dec 14 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
Jun 02 jQuery
React 项目迁移 Webpack Babel7的实现
Sep 12 Javascript
javaScript 实现重复输出给定的字符串的常用方法小结
Feb 20 Javascript
JavaScript ECMA-262-3 深入解析(二):变量对象实例详解
Apr 25 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
Nov 18 Vue.js
Layui 导航默认展开和菜单栏选中高亮设置的方法
Sep 04 #Javascript
微信小程序官方动态自定义底部tabBar的例子
Sep 04 #Javascript
layerui代码控制tab选项卡,添加,关闭的实例
Sep 04 #Javascript
layui 表单标签的校验方法
Sep 04 #Javascript
解决layui 表单元素radio不显示渲染的问题
Sep 04 #Javascript
对layer弹出框中icon数字参数的说明介绍
Sep 04 #Javascript
Element 默认勾选表格 toggleRowSelection的实现
Sep 04 #Javascript
You might like
用PHP发电子邮件
2006/10/09 PHP
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
PHP生成随机用户名和密码的实现代码
2013/02/27 PHP
php笔记之:AOP的应用
2013/04/24 PHP
jQuery 使用手册(一)
2009/09/23 Javascript
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
JavaScript 对象模型 执行模型
2010/10/15 Javascript
web前端开发也需要日志
2010/12/09 Javascript
js列举css中所有图标的实现代码
2011/07/04 Javascript
jQuery中将函数赋值给变量的调用方法
2012/03/23 Javascript
一个关于javascript匿名函数的问题分析
2012/03/30 Javascript
javascript数组排序汇总
2015/07/07 Javascript
AngularJs基于角色的前端访问控制的实现
2016/11/07 Javascript
利用jquery获取select下拉框的值
2016/11/23 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
JS实现商城秒杀倒计时功能(动态设置秒杀时间)
2019/12/12 Javascript
element中el-container容器与div布局区分详解
2020/05/13 Javascript
[01:15]《辉夜杯》北京网鱼队巡礼
2015/10/26 DOTA
[01:02:38]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第二场 1月10日
2021/03/11 DOTA
Python中最大最小赋值小技巧(分享)
2017/12/23 Python
使用Python读取二进制文件的实例讲解
2018/07/09 Python
python 限制函数执行时间,自己实现timeout的实例
2019/01/12 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
Python实现多态、协议和鸭子类型的代码详解
2019/05/05 Python
pytorch 实现打印模型的参数值
2019/12/30 Python
Python HTTP下载文件并显示下载进度条功能的实现
2020/04/02 Python
Jupyter notebook如何实现指定浏览器打开
2020/05/13 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
Bench加拿大官方网站:英国城市服装品牌
2017/11/03 全球购物
美国狗旅行和户外用品领先供应商:kurgo
2020/08/18 全球购物
SCHIESSER荷兰官方网站:德国内衣专家
2020/10/09 全球购物
巴西最大的运动品牌:Olympikus
2020/07/14 全球购物
构造器Constructor是否可被override?
2013/08/06 面试题
Windows和Linux动态库应用异同
2016/07/28 面试题
2015元旦晚会主持词(开场白+结束语)
2014/12/14 职场文书
三种方式清除vue路由跳转router-link的历史记录
2022/04/10 Vue.js