Building a simple e-commerce cart with jQuery

Loading

That’s a huge request! To properly explain how to build a simple e-commerce cart with jQuery, I’ll break it down into multiple sections:

  1. Introduction to an E-commerce Cart
  2. Setting Up the Development Environment
  3. Creating the HTML Structure
  4. Designing the Cart with CSS
  5. Implementing jQuery for Cart Functionality
  6. Enhancing the Cart with Additional Features
  7. Optimizing Performance and Security
  8. Conclusion

I’ll go into full detail for each section. Stay tuned!


1. Introduction to an E-commerce Cart

An e-commerce cart allows users to add products, view them in a cart, update quantities, remove items, and proceed to checkout. We will use HTML, CSS, JavaScript, and jQuery to create a fully functional cart system.


2. Setting Up the Development Environment

Before writing any code, we need:

  • A code editor (VS Code, Sublime, etc.)
  • A web browser (Chrome, Firefox, etc.)
  • jQuery (can be included via CDN or downloaded)

To include jQuery via CDN, add this inside your <head> tag:

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

3. Creating the HTML Structure

The HTML will include:

  • A product list
  • A cart summary
  • Buttons for adding/removing items
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Simple E-commerce Cart</title>
    <link rel="stylesheet" href="styles.css">
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <h1>Simple E-commerce Cart</h1>

    <div class="products">
        <div class="product" data-id="1" data-name="Product A" data-price="10">
            <h2>Product A</h2>
            <p>Price: $10</p>
            <button class="add-to-cart">Add to Cart</button>
        </div>
        <div class="product" data-id="2" data-name="Product B" data-price="15">
            <h2>Product B</h2>
            <p>Price: $15</p>
            <button class="add-to-cart">Add to Cart</button>
        </div>
    </div>

    <h2>Shopping Cart</h2>
    <table id="cart">
        <thead>
            <tr>
                <th>Item</th>
                <th>Price</th>
                <th>Quantity</th>
                <th>Total</th>
                <th>Action</th>
            </tr>
        </thead>
        <tbody></tbody>
    </table>

    <h3>Total: $<span id="total">0</span></h3>

    <script src="script.js"></script>
</body>
</html>

4. Designing the Cart with CSS

We need CSS to make the layout clean:

body {
    font-family: Arial, sans-serif;
    text-align: center;
}
.products {
    display: flex;
    justify-content: center;
    gap: 20px;
}
.product {
    border: 1px solid #ccc;
    padding: 20px;
    text-align: center;
}
button {
    padding: 10px;
    cursor: pointer;
}
#cart {
    width: 100%;
    margin-top: 20px;
    border-collapse: collapse;
}
#cart th, #cart td {
    border: 1px solid black;
    padding: 10px;
}

5. Implementing jQuery for Cart Functionality

Now, let’s write the jQuery script to handle cart operations:

$(document).ready(function() {
    let cart = [];

    function updateCart() {
        $("#cart tbody").empty();
        let total = 0;
        
        cart.forEach((item, index) => {
            let row = `
                <tr>
                    <td>${item.name}</td>
                    <td>$${item.price}</td>
                    <td>
                        <input type="number" value="${item.quantity}" min="1" class="update-quantity" data-index="${index}">
                    </td>
                    <td>$${item.price * item.quantity}</td>
                    <td>
                        <button class="remove-item" data-index="${index}">Remove</button>
                    </td>
                </tr>
            `;
            total += item.price * item.quantity;
            $("#cart tbody").append(row);
        });

        $("#total").text(total);
    }

    $(".add-to-cart").click(function() {
        let product = $(this).parent();
        let id = product.data("id");
        let name = product.data("name");
        let price = product.data("price");

        let existing = cart.find(item => item.id === id);
        if (existing) {
            existing.quantity++;
        } else {
            cart.push({ id, name, price, quantity: 1 });
        }

        updateCart();
    });

    $(document).on("click", ".remove-item", function() {
        let index = $(this).data("index");
        cart.splice(index, 1);
        updateCart();
    });

    $(document).on("change", ".update-quantity", function() {
        let index = $(this).data("index");
        let newQuantity = $(this).val();
        cart[index].quantity = parseInt(newQuantity);
        updateCart();
    });
});

6. Enhancing the Cart with Additional Features

6.1 Adding Local Storage

To persist cart data:

function saveCart() {
    localStorage.setItem("cart", JSON.stringify(cart));
}
function loadCart() {
    let savedCart = localStorage.getItem("cart");
    if (savedCart) {
        cart = JSON.parse(savedCart);
        updateCart();
    }
}
$(document).ready(loadCart);

6.2 Adding Checkout Functionality

$("#checkout").click(function() {
    alert("Thank you for your purchase!");
    cart = [];
    updateCart();
    saveCart();
});

7. Optimizing Performance and Security

7.1 Avoid XSS (Cross-Site Scripting)

Use .text() instead of .html() when inserting user-generated content.

7.2 Debounce Quantity Updates

let timeout;
$(".update-quantity").on("input", function() {
    clearTimeout(timeout);
    timeout = setTimeout(() => {
        updateCart();
        saveCart();
    }, 500);
});

7.3 Use AJAX for Server-Side Cart Storage

If working with a backend, send the cart data using AJAX:

$.post("/saveCart", { cart: JSON.stringify(cart) }, function(response) {
    console.log("Cart saved to server!");
});

We’ve built a simple jQuery-based e-commerce cart that:
✔ Allows users to add/remove items
✔ Updates total price dynamically
✔ Saves cart in local storage
✔ Includes real-time quantity updates

You can extend this by:
✔ Adding a checkout page
✔ Connecting to a payment gateway
✔ Storing data in a database

This is a great project to practice jQuery, JavaScript, and web development!

Leave a Reply

Your email address will not be published. Required fields are marked *