`
lushuaiyin
  • 浏览: 671082 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

js数组的删除元素------jquery easyui tab组件未提供删除元素方法的解决方案

 
阅读更多

今天用到jquery easyui 的tab组件,看看demo发现挺好用的。

demo里提供了3个方法分别是:

addTab()
getSelected()
update()

而我在开发中遇到一个问题,就是这个tab组件右上角有个小叉号可以关闭tab选项卡,

但是它没提供删除tab的方法,也就是说他把删除tab选项卡的方法封装了。

(当你打开一个tab页,再点击打开时要给出提示,它已经打开了,而不是再打开同样的tab,

否则会重复打开,所以我需要在打开tab时记录打开的tab,关闭tab时再从记录中删除它,

这样我就能保证一个tab只能打开一次,不要重复显示)

这大概是所有开发者最头疼的问题,你封装了,而我确实需要这个方法,总不能去研究你的源码吧?

如果源码写的很大,超过500行就不要去研究了,那样会更费时间。

我选择了另辟蹊径。

我可以声明一个数组,在添加tab页时,把这个tab的id加到数组中。

当次页面未关闭,用户又点击打开次tab时,我先处理这个数组,循环寻找每个id是否存在,

(不存在表明此tab已经关闭,从数组删除此id)

如果此元素存在,表明页面已经打开此tab,这时不要再打开了,要给用户提示已经打开了。

看看代码:

var isshow=new Array();
function validateShow(){
	for(var i=0;i<isshow.length;i++){
		var temp=isshow[i];
		if(document.getElementById(temp)){
			
		}else{
			isshow.splice(i,1);
		}
	}
}
function isexisttab(id){
	validateShow();
	var falg=false;
	for(var i=0;i<isshow.length;i++){
		var temp=isshow[i];
		if(temp==id){
			falg=true;
		}else{
			falg=false;
		}
	}
	return falg;
}
function createTab(id,pId,name,url){
	  //alert(id+pId+name+"jjj"+url);
	  //alert("here--"+id+"--"+pId+"--"+name);
	  if(isexisttab(id)){
		  alert("此页面已经打开");
	  }else{
		  $('#page2').tabs('add',{
				title:name ,
				content:'<div title=\"'+name+'\"  id=\"'+id+'\" closable="true"  style="overflow:hidden;width:100%;height:100%;" \><iframe scrolling="yes" frameborder="0"  src="'+url+'" style="width:100%;height:100%;"></iframe></div>',
				iconCls:'icon-save',
				closable:true
	      });
		  
		  isshow.push(id);
	  }
	 
	 
	  //////
}


这里我要说js中从数组删除元素的方法 .splice(i,1);

arrayObj.splice(deletePos,deleteCount);//删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素

如果我们再for中遍历,删除当前元素就是.splice(i,1);

从前没用到过删除方法,今天一查,居然js没有数组删除元素的remove方法!!!

太令我惊讶了,不过可以.splice(i,1);实现同样效果,在此写博客记录下来。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics