Jquery快速构建可拖曳的购物车-DragDrop

简介: 拖曳功能早已经成为各个网站吸引用户的一大亮点,那有没有想过如何把拖曳功能应用到电子商务网站的购物车功能模块中呢? 这样一来,购买者只需要把自己感兴趣的商品拖曳到自己的购物车中,也可以从购物车中删除商品 同时更新购物车的总体价格和数量。

拖曳功能早已经成为各个网站吸引用户的一大亮点,那有没有想过如何把拖曳功能应用到电子商务网站的购物车功能模块中呢? 这样一来,购买者只需要把自己感兴趣的商品拖曳到自己的购物车中,也可以从购物车中删除商品 同时更新购物车的总体价格和数量。

那咱们就开始实例吧,本实例并没有链接数据库读取数据来初始化Products,而是创建了一些虚拟的商品如下:

 

1、  创建Product实体类

 

public class Product

    {

        public string Code { get; set;  }

        public string Name { get; set; }

        public string Description { get; set; }

        public double Price { get; set; }

}

 

2、  构建商品List<Product>

 

public class Product

    {

        public string Code { get; set;  }

        public string Name { get; set; }

        public string Description { get; set; }

        public double Price { get; set; }

}

 

3、创建DataList并绑定List<Product>

 

<asp:DataList ID="dlProducts" RepeatColumns="3"

         RepeatDirection="Horizontal" runat="server">

 

    <ItemTemplate>

 

    <div class="productItemStyle" price='<%# Eval("Price") %>'

         code='<%# Eval("Code") %>'  id='item_<%# Container.ItemIndex + 1 %>'>

    <li>

    <%# Eval("Code") %>

    </li>

    <li>

    <%# Eval("Name") %>

    </li>

    <li>

    <%# Eval("Description") %>

    </li>

 

     <li>

    $<%# Eval("Price") %>

    </li>

    </div>

 

    </ItemTemplate>

 

    </asp:DataList>

 

private void BindData()

{

    var products = GetProducts();

 

    dlProducts.DataSource = products;

    dlProducts.DataBind();

}

 

productItemStyle 样式名称

Container.ItemIndex动态生成连续的商品编号

 

4、  生成Products Div Draggable

下载最新的Jquery JS文件及其UI文件:

<script language="javascript" type="text/javascript" src="jquery-1.2.6.min.js"></script>

<script language="javascript" type="text/javascript"

src="jquery-ui-personalized-1.6rc4.min.js"></script>

 

页面初始化时生成Div Draggable

 

$(document).ready(function() {

 

        $(".productItemStyle").draggable({ helper: "clone", opacity: "0.5" });

)};

 

5、创建一个DropZone

 

DropZones 是购物车区域

 

$(".dropZone").droppable(

        {

            accept: ".productItemStyle",

            hoverClass: "dropHover",

            drop: function(ev, ui) {

 

                var droppedItem = ui.draggable.clone().addClass("droppedItemStyle");

 

                var productCode = droppedItem[0].attributes["code"].nodeValue;

                var productPrice =

                 getFormattedPrice(droppedItem[0].attributes["price"].nodeValue);

 

                var removeLink = document.createElement("a");

                removeLink.innerHTML = "Remove";

                removeLink.className = "deleteLink";

                removeLink.href = "#";

                removeLink.onclick = function()

                {

                    $(".dropZone").children().remove("#" + droppedItem[0].id);

                    updateTotal(productPrice * (-1));

                }

 

                droppedItem[0].appendChild(removeLink);

 

                $(this).append(droppedItem);

 

                updateTotal(productPrice);

            }

        }

        );

 

Accept参数:展示Class= productItemStyleDiv

hoverClass参数:当有Product放到DropZone时的样式

drop函数:当Product拖放到DropZone时出发的函数,此函数主要做了一个Product ItemClone,价格的计算、添加Remove按钮以及到点击Remove按钮时所触发的事件。

 

价格的计算updateTotal()函数

// update the total!

    function updateTotal(price) {

 

        total += parseFloat(price);

        $("#total").html(total.toFixed(2));

        $(".shoppingCartTotal").effect("bounce");

 

}

 

最终效果如下图:

 

 

 

英文原文地址:http://www.codeproject.com/KB/aspnet/JQueryShoppingCart.aspx

 

 

版权

作者:灵动生活 郝宪玮

出处:http://www.cnblogs.com/ywqu

如果你认为此文章有用,请点击底端的【推荐】让其他人也了解此文章,

img_2c313bac282354945ea179a807d7e70d.jpg

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

 

相关文章
|
8月前
|
开发框架 前端开发 JavaScript
使用JavaScript、jQuery和Bootstrap构建待办事项应用
使用JavaScript、jQuery和Bootstrap构建待办事项应用
134 0
|
JSON 前端开发 .NET
如何构建ASP.NET MVC4&JQuery&AJax&JSon示例
背景:   博客中将构建一个小示例,用于演示在ASP.NET MVC4项目中,如何使用JQuery Ajax。 步骤: 1,添加控制器(HomeController)和动作方法(Index),并为Index动作方法添加视图(Index.cshtml),视图中HTML如下: 输入你的姓名: 输入你的年龄: 提交 清空   视图中包含两个文本框,分别用来输入名字和年龄,包含连个按钮,分别用来提交信息和清空文本框的内容,同时包含一个段落,用来显示Ajax返回的数据信息。
1102 0
|
XML JavaScript 前端开发
|
前端开发 JavaScript 存储
自定义构建jquery插件实验(2)
//简单的 test.js ;(function($){ $.fn.getData=function(options){ return this.append(options); } })(jQuery); test.html &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta chars
1211 0
|
前端开发 JavaScript UED
Permit.js – 用于构建多状态原型的 jQuery 插件
  Permit.js 是一个 jQuery 插件,用于构建交互的,多态的网站原型和应用程序原型。也许你的网站有的功能仅适用于登录的成员,只有管理员才能使用或者你的应用程序会根据线上或离线有不同的功能,这些都是多状态原型的例子。
832 0
|
JavaScript 开发者 前端开发
帮助你构建自适应布局的30款优秀 jQuery 插件(上篇)
  自适应设计(Responsive Layouts)是时下网页设计领域最热门的话题之一,自适应设计的目标是要让产品界面能够响应用户的行为,根据不同终端设备自动调整尺寸,带给用户良好的使用体验。下面是收集的15款优秀的自适应 jQuery 插件,希望这些插件能够帮助到您。
1058 0
|
JavaScript
帮助你构建自适应布局的30款优秀 jQuery 插件(下篇)
  自适应设计(Responsive Layouts)是时下网页设计领域最热门的话题之一,自适应设计的目标是要让产品界面能够响应用户的行为,根据不同终端设备自动调整尺寸,带给用户良好的使用体验。下面是收集的15款优秀的自适应 jQuery 插件,希望这些插件能够帮助到您。
1030 0