多个列表,js操作隐藏同行中的相同属性值

需求场景:

选择一个商品,显示所有店家的不同属性,每个ul代表一个店家,每行的li代表一种属性

效果如下:                                     

点击显示全部: 点击隐藏相同项按钮后:

解决思路:

隐藏按钮实现:

遍历ul,在遍历每个url里的li

遍历第一个ul的li时,把每个li的值添加到attr数组作为对比的初始值,并用一个data数组默认为true标识已重复

遍历第二次ul起,去li的值与attr进行对比,如果不同则把data对应的坐标标识为false,相同则还是为true(注意:如果已经是false,则不能再标识为true);

遍历ul与li,根据data数组,把相同的li的text的值赋值给新属性value2,并把text替换为/

显示按钮实现:

把li标签中value2的值赋值给text

html代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="jquery.1.9.1.min.js.js" type="text/javascript"></script>
</head>
<body>
 <ul>
	<li>1</li>
	<li>2</li>
	<li>3</li>
	<li>4</li>
	<li>0</li>
 </ul>
  <ul>
	<li>2</li>
	<li>2</li>
	<li>3</li>
	<li>4</li>
	<li>5</li>
 </ul>
  <ul>
	<li>1</li>
	<li>2</li>
	<li>3</li>
	<li>3</li>
	<li>5</li>
 </ul>
 <button onclick="hideFn()">隐藏相同项</button>
  <button onclick="showFn()">显示全部</button>
<script>

	function hideFn(){
	 var data=[];
	 var attr=[];
	 $.each($('ul'), function(index,item){
		$.each($(item).children(),function(i){
			if(index==0){
			
				attr.push($(this).text());
				data.push(true);
			}
			if($(this).text()==attr[i]){
				data[i]= data[i]==false?false:true;
			}else{
				data[i]=false;
			}
		});
		
	 }); 
	 
	 $.each($('ul'), function(index,item){
		$.each($(item).children(),function(i){
			if(data[i]==true){
				if($(this).text()!='/'){
					$(this).attr("value2",$(this).text());
				}
				$(this).text('/');
			}
		});
		
	 }); 
	}
	
	function showFn(){
		$.each($('ul'), function(index,item){
		$.each($(item).children(),function(i){
			if($(this).attr("value2")){
				$(this).text($(this).attr("value2"));
			}
			
		});
		
	 }); 
	}
	
</script>
</body>
</html>

 

需注意:给li的value属性赋值,得到的却是0;这是需要自定义一个属性,这样子才能赋值成功。

原因:ul 中的li定义的value会自动转换为int.数值,ie 浏览器下大于int最大值,显示int最大值,其他浏览器显示为0.而且无论你定义什么值,都会转int.默认为1,

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值