html代码部分
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="index.css">
<script src="jQuery.min.js"></script>
<script src="index.js"></script>
</head>
<body>
<div class="cart-filter-bar">
<em>全部商品</em>
</div>
<!-- 购物车主要核心区域 -->
<div class="cart-wrap">
<!-- 头部全选模块 -->
<div class="cart-thread">
<div class="t-checkbox">
<input type="checkbox" class="checkall"> 全选
</div>
<div class="t-goods">商品</div>
<div class="t-price">单价</div>
<div class="t-num">数量</div>
<div class="t-sum">小计</div>
<div class="t-action">操作</div>
</div>
<!-- 商品详细模块 -->
<div class="cart-item-list">
<div class="cart-item check-cart-item">
<div class="p-checkbox">
<input type="checkbox" name=" " class="j-checkbox">
</div>
<div class="p-goods">
<div class="p-img">
<img src="img.png" alt="">
</div>
<div class="p-msg">【5本26.8元】经典儿童文学彩图青少版八十天环游地球中学生语文教学大纲</div>
</div>
<div class="p-price">¥22.50</div>
<div class="p-num">
<div class="quantity-form"><a href="javascript:;" class="decrement">-</a><input type="text" class="itxt" value="1"><a href="javascript:;" class="increment">+</a></div>
</div>
<div class="p-sum">¥22.50</div>
<div class="p-action"><a href="javascript:;">删除</a></div>
</div>
<div class="cart-item check-cart-item">
<div class="p-checkbox">
<input type="checkbox" name=" " class="j-checkbox">
</div>
<div class="p-goods">
<div class="p-img">
<img src="img.png" alt="">
</div>
<div class="p-msg">【5本26.8元】经典儿童文学彩图青少版八十天环游地球中学生语文教学大纲</div>
</div>
<div class="p-price">¥29.80</div>
<div class="p-num">
<div class="quantity-form"><a href="javascript:;" class="decrement">-</a><input type="text" class="itxt" value="1"><a href="javascript:;" class="increment">+</a></div>
</div>
<div class="p-sum">¥29.80</div>
<div class="p-action"><a href="javascript:;">删除</a></div>
</div>
<div class="cart-item check-cart-item">
<div class="p-checkbox">
<input type="checkbox" name=" " class="j-checkbox">
</div>
<div class="p-goods">
<div class="p-img">
<img src="img.png" alt="">
</div>
<div class="p-msg">【5本26.8元】经典儿童文学彩图青少版八十天环游地球中学生语文教学大纲</div>
</div>
<div class="p-price">¥19.80</div>
<div class="p-num">
<div class="quantity-form"><a href="javascript:;" class="decrement">-</a><input type="text" class="itxt" value="1"><a href="javascript:;" class="increment">+</a></div>
</div>
<div class="p-sum">¥19.80</div>
<div class="p-action"><a href="javascript:;">删除</a></div>
</div>
<div class="cart-item check-cart-item">
<div class="p-checkbox">
<input type="checkbox" name=" " class="j-checkbox">
</div>
<div class="p-goods">
<div class="p-img">
<img src="img.png" alt="">
</div>
<div class="p-msg">【5本26.8元】经典儿童文学彩图青少版八十天环游地球中学生语文教学大纲</div>
</div>
<div class="p-price">¥32.40</div>
<div class="p-num">
<div class="quantity-form"><a href="javascript:;" class="decrement">-</a><input type="text" class="itxt" value="1"><a href="javascript:;" class="increment">+</a></div>
</div>
<div class="p-sum">¥32.40</div>
<div class="p-action"><a href="javascript:;">删除</a></div>
</div>
<!-- 结算模块 -->
<div class="cart-floatbar">
<div class="select-all">
<input type="checkbox" class="checkall">全选
</div>
<div class="operation">
<a href="javascript:;" class="remove-batch">删除选中的商品</a>
<a href="javascript:;" class="clear-all">清理购物车</a>
</div>
<div class="toolbar-right">
<div class="amout-sum">已选<em> 1 </em>件商品</div>
<div class="price-sum">总价: <em>¥12.60</em></div>
<div class="btn-area">去结算</div>
</div>
</div>
</div>
</div>
</body>
</html>
css代码部分
.cart-wrap {
width: 1225px;
}
.cart-filter-bar {
font-weight: 500;
color: #ff0000;
font-size: 20px;
width: 80px;
height: 40px;
line-height: 50px;
border-bottom: 1px solid #ff0000;
text-align: center;
}
em {
font-style: normal;
}
.cart-thread {
height: 60px;
line-height: 60px;
background-color: #ccc;
text-align: center;
}
.cart-thread div {
float: left;
}
.t-checkbox {
width: 130px;
text-align: left;
padding-left: 20px;
}
.t-goods {
width: 400px;
text-align: left;
}
.t-price {
width: 150px;
}
.t-num {
width: 150px;
}
.t-sum {
width: 150px;
}
.t-action {
width: 150px;
}
.cart-item-list {
width: 1230px;
background-color: rgb(255, 212, 212);
}
.cart-item-list div {
float: left;
}
.cart-item {
width: 1200px;
padding-left: 20px;
height: 150px;
border: 1px solid #ccc;
border-bottom: 0;
}
.p-checkbox {
padding-top: 20px;
width: 50px;
height: 100px;
}
.p-goods {
float: left;
width: 480px;
height: 150px;
padding-top: 20px;
}
.p-goods .p-img img {
width: 100px;
height: 100px;
}
.p-msg {
float: left;
font-size: 12px;
width: 200px;
margin-left: 20px;
}
.p-price {
padding-top: 20px;
width: 150px;
text-align: center;
}
.p-num {
padding-top: 20px;
width: 152px;
text-align: center;
}
.p-num a {
text-decoration: none;
color: #000;
}
.quantity-form {
width: 100px;
margin-left: 24px;
/* height: 25px; */
border: 1px solid #000;
text-align: center;
}
.quantity-form input {
width: 50px;
text-align: center;
border: 0;
border-left: 1px solid #000;
border-right: 1px solid #000;
}
.quantity-form a {
width: 22px;
display: inline-block;
text-align: center;
color: #000;
background-color: #fff;
}
.p-sum {
padding-top: 20px;
width: 150px;
text-align: center;
}
.p-action {
padding-top: 20px;
width: 150px;
text-align: center;
}
a {
text-decoration: none;
color: #000;
}
.cart-floatbar {
width: 1220px;
height: 50px;
line-height: 50px;
border: 1px solid #000;
}
.select-all {
width: 100px;
padding-left: 20px;
}
.operation {
width: 800px;
font-size: 12px;
}
.operation a {
display: inline-block;
width: 100px;
text-align: center;
}
.toolbar-right {
width: 300px;
height: 50px;
line-height: 50px;
font-size: 12px;
}
.amout-sum {
width: 100px;
}
.amout-sum em {
color: #dd0000;
font-weight: 600;
font-size: 16px;
}
.price-sum {
width: 120px;
}
.price-sum em {
color: #dd0000;
font-weight: 600;
font-size: 16px;
}
.btn-area {
width: 80px;
height: 50px;
font-size: 16px;
line-height: 45px;
color: #fff;
font-weight: 700;
background-color: #dd0000;
text-align: center;
}
.checkbox-item-checked {
background-color: rgb(255, 218, 218);
}
js代码部分
$(function() {
// 1.全选全不选模块
$(".checkall").change(function() {
$(".j-checkbox,.checkall").prop("checked", $(this).prop("checked"));
if ($(this).prop("checked")) {
$(".cart-item").addClass("checkbox-item-checked");
} else {
$(".cart-item").removeClass("checkbox-item-checked");
}
getsum();
});
// 2.如果有一个复选框全被选中,则全选
$(".j-checkbox").change(function() {
if ($(".j-checkbox:checked").length === $(".j-checkbox").length) {
$(".checkall").prop("checked", true);
} else {
$(".checkall").prop("checked", false);
}
if ($(this).prop("checked")) {
$(this).parents(".cart-item").addClass("checkbox-item-checked");
} else {
$(this).parents(".cart-item").removeClass("checkbox-item-checked");
}
getsum();
});
// 3. (1) 点击增加商品数量,总价随之增加
$(".increment").click(function() {
// 获取当前商品数量
var n = $(this).siblings(".itxt").val();
n++;
$(this).siblings(".itxt").val(n);
// 获取当前商品单价p
var p = $(this).parents(".p-num").siblings(".p-price").html().substr(1);
// 添加商品总价
$(this).parents(".p-num").siblings(".p-sum").html("¥" + (p * n).toFixed(2));
// console.log(p);
getsum();
});
// 3. (2) 点击减少商品数量,总价随之减少
$(".decrement").click(function() {
// 获取当前商品数量
var n = $(this).siblings(".itxt").val();
if (n <= 1) {
return false;
}
n--;
$(this).siblings(".itxt").val(n);
// 获取当前商品单价p
var p = $(this).parents(".p-num").siblings(".p-price").html().substr(1);
// 添加商品总价
$(this).parents(".p-num").siblings(".p-sum").html("¥" + (p * n).toFixed(2));
// console.log(p);
getsum();
});
getsum();
// 4. 计算商品总数量以及总价钱
function getsum() {
var count = 0;
var money = 0;
// 想加个限制条件,如果小复选框选中,才计算总数值
// if ($(".j-checkbox").prop("checked")) {
$(".itxt").each(function(i, ele) {
if ($(".itxt").eq(i).parents(".p-num").siblings(".p-checkbox").children(".j-checkbox").prop("checked")) {
count += parseInt($(ele).val());
}
})
$(".amout-sum em").text(count);
$(".p-sum").each(function(i, ele) {
if ($(".p-sum").eq(i).siblings(".p-checkbox").children(".j-checkbox").prop("checked")) {
money += parseFloat($(ele).text().substr(1));
}
})
$(".price-sum em").html("¥" + money.toFixed(2));
};
// 删除商品操作
// 1. 单独删除每个商品
$(".p-action").click(function() {
$(this).parent(".cart-item").remove();
getsum();
});
// 2. 点击下面删除选中的商品
$(".remove-batch").click(function() {
$(".j-checkbox:checked").parents(".cart-item").remove();
getsum();
});
// 3. 清理购物车 把购物车中的所有商品移除
$(".clear-all").click(function() {
$(".cart-item").remove();
getsum();
});
})
说明:在pink老师教学的基础上,增加了对小复选框的判断,只有被选中的小复选框才会被计算数量及总价。