javascript、jQuery的扩展方法,扩展实例展示代码
$(function () {
var total = 0, height = $(window).height(), memberScroll, cartScroll, proScroll;
$.cart = {
succ: function (data, status, xhr) {
data.Status == 1 ?
$.dialog(data.Message, { header: { title: "添加商品", closebtn: "×" } }) :
data.Status == 0 ?
$.cart.set.apply(
data.Target.Product ?
$.cart.add(data.Target.Product) :
$(".ordBody01 tbody tr[data-ProductNo=" + data.Target.CartProduct.ProductNo + "]"),
[data.Target.CartProduct]
) :
$.cart.selpro(data.Target.Products);
},
add: function (pro) {
var tr = $("<tr></tr>").attr('data-ProductNo', pro.ProductNo).appendTo(".ordBody01 tbody");
$('<td width="38%" class="name"></td>').html(pro.Name).appendTo(tr);
$('<td width="20%" class="price"><input type="number" class="priTxt" readonly="readonly" value="' + pro.SalePrice + '"/></td>').appendTo(tr);
var td = $('<td width="30%" class="proAmount"></td>').appendTo(tr);
$('<p><button type="button" class="qtyDown disabled"></button><input type="tel" name="qty" value="1" class="qtyTxt"><button type="button" class="qtyUp"></button></p>').appendTo(td);
$('<td><button type="button" class="btnDelete"></button></td>').appendTo(tr);
tr.find(".priTxt").bind("change", $.cart.priceChange);
tr.find(".qtyTxt").bind("change", $.cart.qtyChange);
tr.find(".qtyDown,.qtyUp").bind("click", $.cart.qtyChange);
tr.find(".btnDelete").bind("click", $.cart.cartDelete);
return tr;
},
priceChange: function (e) {
e.preventDefault();
var that = $(this),
val = that.val();
val = /\d+/.test(val) && val > 0 ? parseFloat(val) : 0;
that.val(val);
$.post("/Order/SetPrice", { ProductNo: that.closest("tr").attr("data-ProductNo"), Price: val });
$.cart.cartCalc();
},
qtyChange: function (e) {
e.preventDefault();
var that = $(this), inp = that.closest("p").find(".qtyTxt");
!that.hasClass("disabled") && inp.cartChange(e, that.hasClass("qtyDown") ? -1 : that.hasClass("qtyUp") ? 1 : 0);
$.cart.cartCalc();
},
set: function (cpro) {
$("#word").val("");
$(this).find(".qtyTxt").val(cpro.Quantity).change();
},
pay: function (data, status, xhr) {
$.dialog(data, { header: { title: "订单确认", closebtn: '×' }, footer: { closebtn: '取消', okbtn: '确定', } }, function () {
var pay = this.$element.find("input.pay").val();
$.post("/Order/BuildOrder", { Payment: pay }, function (res) {
$.dialog(res.Message, { header: { title: "支付成功", closebtn: '×' }, close: res.Status ? null : function () { location.reload() } })
.$element
.dialogLoaded()
});
});
},
dialogLoaded: function () {
var that = $(this);
that.find("[data-page=true]").click(function (e) {
e.preventDefault(), $(this).navigate({
callback: function () {
var $that = $(this);
$that.find(".ordDetListBody").height($(window).height() - 240);
$that.find(".btnClose").click(function () { location.reload() })
}
})
});
},
selpro: function (pros) {
var div = $('<div style="width:100%;height:100%;overflow:scroll"></div>');
var ul = $('<ul class="productList"></ul>').appendTo(div);
for (var i in pros) {
$("<li class='clearfix' data-productno='" + pros[i].ProductNo + "'><span class='floatL'>" + pros[i].Name + "</span><span class='floatR'>" + pros[i].SalePrice + "</span></li>").appendTo(ul).bind("click", $.cart.addpro);
}
var d = $.dialog(div, { header: { title: "选择商品", closebtn: "×" } });
if (proScroll) proScroll.destroy();
proScroll = new iScroll(d.find(".productList")[0], { desktopCompatibility: true });
},
addpro: function (e) {
e = e || event;
var that = $(e.target).closest("li"), no = that.attr("data-productno");
$.post('/Order/AddCart', { ProductNo: no }, $.cart.succ);
var el = $(that).closest(".modal"), wr = el.prev();
el.remove(), wr.remove();
},
cartChange: function (e, i) {
i = i || 0;
var that = $(this),
val = that.val(),
init = that.attr("data-init") || 0,
dbtn = that.prev(".qtyDown"),
ubtn = that.next(".qtyUp");
oval = that.attr("oval") || val;
val = (/\d+/.test(val) && val > 1 ? parseInt(val) : 1) + i;
that.val(val), dbtn.toggleClass("disabled", val <= 1);
init && $.post("/Order/SetCart", { ProductNo: that.closest("tr").attr("data-ProductNo"), Amount: val });
that.attr("data-init", 1)
},
cartAdd: function (e) {
var that = $(e.currentTarget).closest("li"), no = that.attr("data-productno");
$.post('/Order/AddCart', { ProductNo: no }, $.cart.succ);
var el = $(that).closest(".modal"), wr = el.prev();
el.remove(), wr.remove();
},
cartClear: function () {
$.post("/Order/ClsCart")
},
cartDelete: function (e) {
e.preventDefault();
var that = $(this).closest("tr");
$.post("/Order/DelCart", { ProductNo: that.attr("data-ProductNo") });
that.remove();
$.cart.cartCalc();
},
cartCalc: function () {
var sum = 0;
$(".ordBody01 tr").each(function () {
var pri = $(".priTxt", this).val(), qty = $(".qtyTxt", this).val();
sum += pri * qty;
});
$(".ordTotal span").html(sum.toString().replace(/(\d+)(\.)(\d{0,2}).*$/, "$1$2$3"));
},
loadmem: function (data) {
$(".memList").html(data).memberLoaded()
},
memberRemove: function (e) {
e.preventDefault();
var ord = $('.ordMember'), $btn = $('.btnAddMember')
ord.remove(), $btn.show();
$("#word").attr({ "disabled": "disabled", "placeholder": "请先添加会员" });
$.post("/Order/EmptyMember")
},
memberSick: function (e) {
e.preventDefault();
var ord = $(this).closest('.ordMember');
$.post("/Order/MemberSick", { Id: ord.attr('data-MemberId') }, function (d) {
$.dialog(d, { header: { title: '会员病史', closebtn: '×' } })
})
},
memberLoaded: function () {
var that = $(this);
that.find("li[data-memberid]").click(function (e) {
var $that = $(this), ord = $('.ordMember'), memberId = $that.attr("data-MemberId"), memberLevel = $that.attr('data-MemberLevel'), $btn = $('.btnAddMember'), page = that.closest(".page"), linka = $that.find('.link a');
if (linka.size()) return (location.href = linka.attr('href'));
if (!ord.size()) ord = $('<div class="ordMember clearfix"></div>').insertAfter($btn);
ord.attr("data-MemberId", memberId).html(''),
$('<h2></h2>').text($('.name', $that).text()).appendTo(ord),
$('<button type="button" class="btnCancelMem"></button>').appendTo(ord).bind("click", $.cart.memberRemove),
$('<button type="button" class="btnStyle02 floatR btnMedRec">查看病历</button>').appendTo(ord).bind("click", $.cart.memberSick),
$('<span></span>').text(memberLevel).appendTo(ord),
$btn.hide(),
$("#word").attr({ "disabled": null, "placeholder": "请输入商品代码" }),
$.post("/Order/SetMember", { MemberId: memberId });
setTimeout(function () { page.remove() });
});
},
goBack: function () {
$(this).click(function (e) {
e.preventDefault();
var that = $(this).closest(".page").removeClass("active");
setTimeout(function () { that.remove() }, 300);
})
},
navigate: function (options) {
$(".modal,.modal-backdrop").remove();
var remote = $(this).attr("data-toggle") || $(this).attr("href");
$.get(remote, function (data) {
var p = $('<div class="page"></div>').html(data).appendTo("#dvContent").addClass("active");
options && options.callback && options.callback.apply(p);
})
},
}
$.fn.goBack = $.cart.goBack;
$.fn.navigate = $.cart.navigate;
$.fn.memberLoaded = $.cart.memberLoaded;
$.fn.cartChange = $.cart.cartChange;
$.fn.dialogLoaded = $.cart.dialogLoaded;
$(".ordBody01").height(height - 240);
$(".ordBody01 .priTxt").bind("change", $.cart.priceChange).change();
$(".ordBody01 .qtyTxt").bind("change", $.cart.qtyChange).change();
$(".btnEmpty").click(function (e) {
e.preventDefault();
var t = $(".ordBody01 tr");
!t.size() ?
$.dialog("订单还不没有商品呢", { header: { title: "清空订单", closebtn: "×" } }) :
$.dialog("清空订单商品?", { footer: { okbtn: "确定", closebtn: "取消" }, header: { title: "清空订单", closebtn: "×" } }, function () {
$.cart.cartClear(), t.remove(), $.cart.cartCalc()
});
});
$(".btnAddMember").click(function (e) {
e.preventDefault(); $(this).navigate({
callback: function () {
var that = $(this);
that.find(".btnBack").goBack();
that.find(".wraper").height(height - 110);
that.find(".memPhoneSearch input")
.keypress(function (e) {
var chars = "0123456789";
var chr = String.fromCharCode(e.charCode == undefined ? e.keyCode : e.charCode);
return e.ctrlKey || e.metaKey || (chr < ' ' || chars.indexOf(chr) > -1);
})
.bind('keyup change', function (e) {
var val = this.value, len = val.length, mem = that.find(".memPhoneSearch");
mem.toggleClass('cur', len > 0);
this.maxLength = /^1/i.test(val) ? 11 : 12;
});
that.find(".btnMemPhoClear").click(function () {
that.find(".memPhoneSearch input").val('').focus();
that.find(".memPhoneSearch").removeClass("cur");
})
that.find(".btnMemSearch").click(function (e) { e.preventDefault(), $(".memPhoneSearch form").submit() });
if (memberScroll) memberScroll.destroy();
memberScroll = new iScroll(that.find(".scroll")[0], { checkDOMChanges: true });
}
});
});
$(".btnSubmitOrder").click(function (e) {
e.preventDefault();
var procnt = $(".ordBody01 tr").size(), mem = $(".ordMember").size();
if (!mem) {
return $.dialog("您没有选择会员", { header: { title: "提交订单", closebtn: "×" } });
}
if (!procnt) {
return $.dialog("您没有添加商品", { header: { title: "提交订单", closebtn: "×" } });
}
$(".ordTotal form").submit();
});
$(".btnCancelMem").bind("click", $.cart.memberRemove);
$(".btnMedRec").bind("click", $.cart.memberSick);
$(".btnDelete").bind("click", $.cart.cartDelete);
$(".qtyDown,.qtyUp").bind("click", $.cart.qtyChange);
$("#word").keyup(function (e) {
var val = this.value, len = val.length;
$(".searchTxt").toggleClass('cur', len > 0);
});
$(document).on("submit", "form", function () {
$(":focus").blur();
})
cartScroll = new iScroll($(".ordBody01 table")[0], { checkDOMChanges: true });
})
javascript、jQuery的扩展方法,扩展实例展示代码的更多相关文章
- 一个利用扩展方法的实例:AttachDataExtensions
扩展方法是C# 3.0(老赵对VB不熟)中最简单,也是最常用的语言特性之一.这是老赵自以为的一个简单却不失经典的实例: [AttributeUsage(AttributeTargets.All, Al ...
- jQuery中on()方法用法实例
这篇文章主要介绍了jQuery中on()方法用法,实例分析了on()方法的功能.定义及在匹配元素上绑定一个或者多个事件处理函数的使用技巧,需要的朋友可以参考下 本文实例讲述了jQuery中on()方法 ...
- jQuery中on()方法用法实例详解
这篇文章主要介绍了jQuery中on()方法用法,实例分析了on()方法的功能及各种常见的使用技巧,并对比分析了与bind(),live(),delegate()等方法的区别,需要的朋友可以参考下 本 ...
- .NET:不要使用扩展方法扩展Object对象。
C#的扩展方法算是一种Minin(掺入)机制,掺入方法有其合理的使用场景,这里说说一种不好的使用场景(个人意见):不要使用扩展方法扩展Object对象.扩展Object会对所有类型的示例有侵入,特别是 ...
- jQuery对象进行方法扩展
<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>01 ...
- jQuery全局进行方法扩展
<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>01 ...
- JavaScript | JQuery插件定义方法
参考 http://www.2cto.com/kf/201507/417874.html ——————————————————————————————————————————————————————— ...
- jQuery中eq()方法用法实例
本文实例讲述了jQuery中eq()方法用法.分享给大家供大家参考.具体分析如下: 此方法能够获取匹配元素集上的相应位置索引的元素. 匹配元素集上元素的位置索引是从0开始的. 语法结构: 复制代码 代 ...
- jQuery中attr()方法用法实例
本文实例讲述了jQuery中attr()方法用法.分享给大家供大家参考.具体分析如下: 此方法设置或返回匹配元素的属性值. attr()方法根据参数的不同,功能也不同. 语法结构一: 获取第一个匹配元 ...
- jQuery中index()方法用法实例
本文实例讲述了jQuery中index()方法用法.分享给大家供大家参考.具体分析如下: 此方法可以搜索匹配元素,并返回元素的索引值.索引值是从0开始的. 语法结构一: 当此方法没有参数的时候,返回值 ...
随机推荐
- redirect的错误用法asp.net怎么使用自定义错误
工作了几年,写过程序也运营过网站,自定义错误也很熟悉了,最近再做项目发现有同事写了这样的代码 if (action != null) { id = Request.QueryString[" ...
- A simple Test Client built on top of ASP.NET Web API Help Page
Step 1: Install the Test Client package Install the WebApiTestClient package from the NuGet Package ...
- HDU 3126 Nova [2009 Asia Wuhan Regional Contest Online]
标题效果 有着n巫妖.m精灵.k木.他们都有自己的位置坐标表示.冷却时间,树有覆盖范围. 假设某个巫妖攻击精灵的路线(他俩之间的连线)经过树的覆盖范围,表示精灵被树挡住巫妖攻击不到.求巫妖杀死所有精灵 ...
- [改变自己wordpress.2]给wordpress加上简单debug sql调试.
或者说,同事. 需要帮她打印出来sql 调试输出到页面sql 在这里,我们使用插件或一个的方式来启动配置文件wordpress的debug 在插件文件夹 wordpress/wp-content/pl ...
- 第二章_session管理
2.1 URL重写 URL重写是Session追踪技术.须要将一个或多个token做为一个查询字符串加入到一个URL中. Token的格式通常是键=值. Url?key-1=value-1&k ...
- Linus Torvalds来自开发商的消息:成就,不定
于IEEE 计算机学会在接受记者采访时, Linux父亲解释了他的哲学了操作系统的成功背后.Linus Torvalds在接受IEEE采访计算机学会谈过:"Linux这项新技术是不是它的,但 ...
- Cocos2dx-3.1.1 冒险01----> 文件夹结构、新项目project创建并执行
windows开发环境:window7.vs2012.python2.7.6 Cocos2d-x 3.1.1的完整文件夹例如以下:比起曾经的2.x的版本号来说分类更规范了 watermark/2/te ...
- C语言,如何检查文件是否存在和权限的信息
按功能access,头文件io.h(linux通过使用unistd.h int access(const char *filename, int amode); amode參 ...
- PE文件结构(四) 输出表
PE文件结构(四) 參考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 输出表 一般来说输出表存在于dll中.输出表提供了 文件里函数的名字跟这些函数的地址, PE装载器通过输出表来改 ...
- 【Eclipse高速发展-文章插件】google V8,对于调试Nodejs
安装的的时候能够通过 Help>Eclipse Marketplace的 搜索方式安装 或者 Help>Install New Software Name:googleV8 Locatio ...