Jquery仿淘宝购物车

首先看效果图,点击全选按钮,所有带条目的复选框按钮都会随之变化,观察结算按钮的颜色变化。带条目的复选框按钮没有被全部选中时,全选按钮也不会被选中。

$(function() {
		showTotal();//计算总计
		
		/*
		给全选添加click事件
		*/
		$("#selectAll").click(function() {
			/*
			1. 获取全选的状态
			*/
			var bool = $("#selectAll").attr("checked");
			/*
			2. 让所有条目的复选框与全选的状态同步
			*/
			setItemCheckBox(bool);
			/*
			3. 让结算按钮与全选同步
			*/
			setJieSuan(bool);
			/*
			4. 重新计算总计
			*/
			showTotal();
		});
		
		/*
		给所有条目的复选框添加click事件
		*/
		$(":checkbox[name=checkboxBtn]").click(function() {
			var all = $(":checkbox[name=checkboxBtn]").length;//所有条目的个数
			var select = $(":checkbox[name=checkboxBtn][checked=true]").length;//获取所有被选择条目的个数

			if(all == select) {//全都选中了
				$("#selectAll").attr("checked", true);//勾选全选复选框
				setJieSuan(true);//让结算按钮有效
			} else if(select == 0) {//谁都没有选中
				$("#selectAll").attr("checked", false);//取消全选
				setJieSuan(false);//让结算失效
			} else {
				$("#selectAll").attr("checked", false);//取消全选
				setJieSuan(true);//让结算有效				
			}
			showTotal();//重新计算总计
		});
	});

	/*
	 * 计算总计
	 */
	function showTotal() {
		var total = 0;
		/*
		1. 获取所有的被勾选的条目复选框!循环遍历之
		*/
		$(":checkbox[name=checkboxBtn][checked=true]").each(function() {
			//2. 获取复选框的值,即其他元素的前缀
			var id = $(this).val();
			//3. 再通过前缀找到小计元素,获取其文本
			var text = $("#" + id + "Subtotal").text();
			//4. 累加计算
			total += Number(text);
		});
		// 5. 把总计显示在总计元素上
		$("#total").text(total);
	}

	/*
	 * 统一设置所有条目的复选按钮
	 */
	function setItemCheckBox(bool) {
		$(":checkbox[name=checkboxBtn]").attr("checked", bool);
	}

	/*
	 * 设置结算按钮样式
	 */
	function setJieSuan(bool) {
		if(bool) {
			$("#jiesuan").removeClass("kill").addClass("jiesuan");
			$("#jiesuan").unbind("click");//撤消当前元素止所有click事件
		} else {
			$("#jiesuan").removeClass("jiesuan").addClass("kill");
			$("#jiesuan").click(function() {return false;});
		}
		
	}
	
	</script>
  </head>
  <body>


	<table width="95%" align="center" cellpadding="0" cellspacing="0">
		<tr>
			<td align="right">
				<img align="top" src="<c:url value='/images/icon_empty.png'/>"/>
			</td>
			<td>
				<span class="spanEmpty">您的购物车中暂时没有商品</span>
			</td>
		</tr>
	</table>  

<br/>
<br/>


<table width="95%" align="center" cellpadding="0" cellspacing="0">
	<tr align="center" bgcolor="#efeae5">
		<td align="left" width="50px">
			<input type="checkbox" id="selectAll" checked="checked"/><label for="selectAll">全选</label>
		</td>
		<td colspan="2">商品名称</td>
		<td>单价</td>
		<td>数量</td>
		<td>小计</td>
		<td>操作</td>
	</tr>




	<c:forEach items="${cartItemList }" var="cartItem">
	<tr align="center">
		<td align="left">
			<input  value="${cartItem.cartItemId }" type="checkbox" name="checkboxBtn" checked="checked"/>
		</td>
		<td align="left" width="70px">
			<a class="linkImage" href="<c:url value='/jsps/book/desc.jsp'/>"><img border="0" width="54" align="top" src="<c:url value='/${cartItem.book.image_b }'/>"/></a>
		</td>
		<td align="left" width="400px">
		    <a href="<c:url value='/jsps/book/desc.jsp'/>"><span>${cartItem.book.bname }</span></a>
		</td>
		<td><span>¥<span class="currPrice">${cartItem.book.currPrice }</span></span></td>
		<td>
			<a class="jian" id="${cartItem.cartItemId }Jian"></a><input class="quantity" readonly="readonly" id="${cartItem.cartItemId }Quantity" type="text" value="${cartItem.quantity }"/><a class="jia" id="${cartItem.cartItemId }Jia"></a>
		</td>
		<td width="100px">
			<span class="price_n">¥<span class="subTotal" id="${cartItem.cartItemId }Subtotal">${cartItem.subtotal }</span></span>
		</td>
		<td>
			<a href="<c:url value='/jsps/cart/list.jsp'/>">删除</a>
		</td>
	</tr>
</c:forEach>	
	<tr>
		<td colspan="4" class="tdBatchDelete">
			<a href="javascript:alert('批量删除成功');">批量删除</a>
		</td>
		<td colspan="3" align="right" class="tdTotal">
			<span>总计:</span><span class="price_t">¥<span id="total"></span></span>
		</td>
	</tr>
	<tr>
		<td colspan="7" align="right">
			<a href="<c:url value='/jsps/cart/showitem.jsp'/>" id="jiesuan" class="jiesuan"></a>
		</td>
	</tr>
</table>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值