jQuery实现多条件筛选

2015年07月16日 19:42helloweba.com 标签:jQuery 

我们在电商平台购买商品时,在商品列表页根据品牌、款式、价格范围等条件进行筛选查询,当点击某个条件时,在页面上会显示用户所选择的条件集合,并且将对应的符合条件的商品信息展示出来。那么今天我们使用jQuery来实现这一前端效果。

HTML

首先,我们将查询条件分类,在页面中布置条件容器li.select-list和已选择的条件容器div.select-result。

<ul class="select">
		<li class="select-list">
			<dl id="select1">
				<dt>上装:</dt>
				<dd class="select-all selected"><a href="#">全部</a></dd>
				<dd><a href="#">针织衫</a></dd>
				<dd><a href="#">毛呢外套</a></dd>
				<dd><a href="#">T恤</a></dd>
				<dd><a href="#">羽绒服</a></dd>
				<dd><a href="#">棉衣</a></dd>
				<dd><a href="#">卫衣</a></dd>
				<dd><a href="#">风衣</a></dd>
			</dl>
		</li>
		<li class="select-list">
			<dl id="select2">
				<dt>裤装:</dt>
				<dd class="select-all selected"><a href="#">全部</a></dd>
				<dd><a href="#">牛仔裤</a></dd>
				<dd><a href="#">小脚/铅笔裤</a></dd>
				<dd><a href="#">休闲裤</a></dd>
				<dd><a href="#">打底裤</a></dd>
				<dd><a href="#">哈伦裤</a></dd>
			</dl>
		</li>
		<li class="select-result">
			<dl>
				<dt>已选条件:</dt>
				<dd class="select-no">暂时没有选择过滤条件</dd>
			</dl>
		</li>
	</ul>

布置好内容后,给页面内容加上css样式以及加载相关js。

<link rel="stylesheet" type="text/css" href="css/style.css">
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/script.js"></script>

jQuery

当用户点击任意条件时,标记当前选中状态,相邻条件取消选中状态,并且更新已选条件容器内容,请看代码:

$(document).ready(function(){
	$("#select1 dd").click(function () {
		$(this).addClass("selected").siblings().removeClass("selected");
		if ($(this).hasClass("select-all")) {
			$("#selectA").remove();
		} else {
			var copyThisA = $(this).clone();
			if ($("#selectA").length > 0) {
				$("#selectA a").html($(this).text());
			} else {
				$(".select-result dl").append(copyThisA.attr("id", "selectA"));
			}
		}
	});
	
	$("#select2 dd").click(function () {
		$(this).addClass("selected").siblings().removeClass("selected");
		if ($(this).hasClass("select-all")) {
			$("#selectB").remove();
		} else {
			var copyThisB = $(this).clone();
			if ($("#selectB").length > 0) {
				$("#selectB a").html($(this).text());
			} else {
				$(".select-result dl").append(copyThisB.attr("id", "selectB"));
			}
		}
	});
	
	
	
	$("#selectA").live("click", function () {
		$(this).remove();
		$("#select1 .select-all").addClass("selected").siblings().removeClass("selected");
	});
	
	$("#selectB").live("click", function () {
		$(this).remove();
		$("#select2 .select-all").addClass("selected").siblings().removeClass("selected");
	});
	
	$(".select dd").live("click", function () {
		if ($(".select-result dd").length > 1) {
			$(".select-no").hide();
		} else {
			$(".select-no").show();
		}
	});
	
});

实际应用中,我们要结合后端程序,实现帅选条件时,页面响应的内容也会变化,有兴趣的同学可以尝试下。

16条评论

  • ぃ

    求main.css...

  • 大荖

    博主厉害 高级程序员了吧

  • somebody

    没有张开显示"更多"啊,楼主

  • 夜微凉、想念不休

    非常好,大爱博主

  • 请问下, 代码中 selectA 是什么东西,在 html 代码里怎么找不到

  • 下载下来没法用啊?出问题了吧,你试试。

  • 快弄个和php后端结合的吧,这个好用,但是没有后端。。。

  • 什么时候出前端结合后端呢

  • 在出个后端交互的那就太好了~

  • 我C,我做完了发现了这个

  • mark

  • 同求和后端交互的实例。。

  • 太帅了,正好需要这个,马克

  • 希望博主 赶快出一个后台交互的文章

  • 先赞一个,能出个后台跟前台交互的实例么 。

  • 东西果然都很实用,代码写得很精简,值得收藏。[嘻嘻]