JS实现商品筛选(2)
来源:互联网 发布:windows活动目录的功能 编辑:程序博客网 时间:2024/04/28 18:38
在(1)中,我们已经知道了怎样把元素选择出来,并且加到已选择的DIV中去。不过那样的方式并不是适合多个搜索条件,并且把相关商品给搜索出来。让我们来重新思考这样的一个需求吧。
先贴一个HTML代码:
<!DOCTYPE HTML><html lang="en-US"><head> <meta charset="UTF-8"> <title>测试</title> <style type="text/css"> *{margin: 0;padding: 0;}/*此为偷懒写法*/ body{background:#fff;font:14px/1.5 "宋体",Arial;} .contain{margin: 50px 0 0 100px;} .fl{float:left;display:inline;} .clearfix{zoom:1;} .clearfix:after{content:'';display:table;clear:both;} .nav li{float:left;display:inline;width:100px;height:20px;background:red;color:#fff;margin-right:10px;text-align:center;cursor:pointer;} .nav .item{margin-top:10px;} .nav p{margin-right:20px;} .contain .choose{margin-top:20px;} .contain .wordbox{float:left;display:inline;margin-right:10px;} .contain .wordbox .word{display:inline-block;margin-right:5px;} .contain .wordbox .close{cursor:pointer;} </style></head><body><div class="contain"> <div id="nav" class="nav"> <div class="item clearfix"> <p class="fl">按品类</p> <ul class="fl"> <li cate="categories">女包</li> <li cate="categories">男包</li> <li cate="categories">功能包</li> <li cate="categories">旅行包</li> </ul> </div> <div class="item clearfix"> <p class="fl">按风格</p> <ul class="fl"> <li cate="style">日韩</li> <li cate="style">欧美</li> <li cate="style">甜美</li> </ul> </div> <div class="item clearfix"> <p class="fl">按材质</p> <ul class="fl"> <li cate="material">牛皮</li> <li cate="material">PU</li> <li cate="material">PVC</li> <li cate="material">ABS</li> <li cate="material">帆布</li> </ul> </div> </div> <p id="choose" class="choose clearfix"><span class="fl">您已选择:</span></p></div></body></html>
大家可以注意到的是我给每一个不同的搜索条件的li加了cate属性值,相同的cate表示同一类的搜索条件,一般来说,这些搜索条件,一行只能选择一个,不可能多个选中。
回想以前的知识点,我们很自然的就想到了object,代码如下:
var obj = {"a":"2"};obj = {"a":"3"};console.dir(obj);
也就是说相同的key值,不同的value值,后者会替换前者,那么接下来的事件就比较容易了。我们只需要创建这样的一个obj,并且维护这个obj对象,就行了。拼接字符到“您已选择”这个容器,包括筛选商品,都由这个obj来进行操控。代码简单如下:
<!DOCTYPE HTML><html lang="en-US"><head> <meta charset="UTF-8"> <title>测试</title> <style type="text/css"> *{margin: 0;padding: 0;}/*此为偷懒写法*/ body{background:#fff;font:14px/1.5 "宋体",Arial;} .contain{margin: 50px 0 0 100px;} .fl{float:left;display:inline;} .clearfix{zoom:1;} .clearfix:after{content:'';display:table;clear:both;} .nav li{float:left;display:inline;width:100px;height:20px;background:red;color:#fff;margin-right:10px;text-align:center;cursor:pointer;} .nav .item{margin-top:10px;} .nav p{margin-right:20px;} .contain .choose{margin-top:20px;} .contain .wordbox{float:left;display:inline;margin-right:10px;} .contain .wordbox .word{display:inline-block;margin-right:5px;} .contain .wordbox .close{cursor:pointer;} </style> </head><body><div class="contain"> <div id="nav" class="nav"> <div class="item clearfix"> <p class="fl">按品类</p> <ul class="fl"> <li cate="categories">女包</li> <li cate="categories">男包</li> <li cate="categories">功能包</li> <li cate="categories">旅行包</li> </ul> </div> <div class="item clearfix"> <p class="fl">按风格</p> <ul class="fl"> <li cate="style">日韩</li> <li cate="style">欧美</li> <li cate="style">甜美</li> </ul> </div> <div class="item clearfix"> <p class="fl">按材质</p> <ul class="fl"> <li cate="material">牛皮</li> <li cate="material">PU</li> <li cate="material">PVC</li> <li cate="material">ABS</li> <li cate="material">帆布</li> </ul> </div> </div> <div id="choose" class="choose clearfix fl"><span class="fl">您已选择:</span><div id="choosebox" class="fl"></div></div></div><script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script><script type="text/javascript"> (function(){ var chooseobj = {}; //var newarr = []; var oli = $(".nav li"); var ochoose = $("#choosebox"); oli.each(function(i,oitem){ oitem.onclick = function(){ var oword = $(".word"); chooseobj[this.getAttribute("cate")] = this.innerHTML; createChooseResult(chooseobj,ochoose[0]); } }); function createChooseResult(obj,contain){ //console.dir(obj); contain.innerHTML = ""; var str = ""; for(var i in obj){ str += "<div class='wordbox'><span cate="+i+" class='word'>"+obj[i]+"</span><span class='close'>×</span></div>"; } contain.innerHTML = str; } $(".close").live("click",function(){ var key = $(this).prev().attr("cate"); delete chooseobj[key]; this.parentNode.parentNode.removeChild(this.parentNode); }) })();</script></body></html>
这个代码的不足点在于关闭这一块的功能,是按照节点来的,也就是说结构尽量和我的统一,或者只要和我的结构保持层级相同一致即可。
另外,代码还是充斥着大量的function,没能以面向对象的思维来写。当然在后面我会一步步地整理出来的。
0 0
- JS实现商品筛选(2)
- JS实现商品筛选(1)
- JS实现商品筛选(3)
- angular实现商品筛选功能(过滤器)
- JS实现商品倒计时
- JS-实现商品倒计时
- 商品倒计时打折js实现
- js实现商品图片放大镜
- 通过js实现筛选功能
- 商品编码(JS)
- 【引用】类似于京东等的搜索筛选查询功能实现,商品分类筛选
- 【PHP开源产品】Ecshop的商品筛选功能实现分析之一(主要对category.php进行分析)
- 类似京东的商品筛选功能的实现,电子商城的产品筛选功能是怎么实现的?
- 类似京东的商品筛选功能的实现,电子商城的产品筛选功能是怎么实现的?
- js实现商品加减及统计
- 商品sku,N规格js实现
- js实现用li进行筛选
- 【JavaScript】原生JS实现多条件筛选
- 天承运,皇帝诏曰
- JAVA白盒安全测试需要关注的API
- 2014我准备好了
- 保护模式内存管理
- UVA 10047 The Monocycle(多状态BFS)
- JS实现商品筛选(2)
- 生活感悟
- Mapreduce-Partition分析
- 有关Vector里面元素重复解决办法
- linux内存管理(下)
- QT/E中的字体
- 获取html各标签或自定义标签的属性
- 基本乐理总结
- 模板