js中的this和jquery click传入dom对象
函数中的 this 指的是函数作为哪个对象的方法被调用,this 就是那个对象。当函数作为构造函数通过 new 来使用时,this 指当下新建的对象。通过 addEventListener 注册的事件回调函数中的 this 指的是事件所注册的对象。
比如说我有一段js
var modifyCartProductNum = function (operate, that) { var thisDom= that; var cartIdDom = $(thisDom).parent().siblings().filter(".cartId"); var cartNumDom = $(thisDom).siblings().filter(".num"); var cartId = parseInt($(cartIdDom).text()); var cartNum = parseInt($(cartNumDom).val()); if (isNaN(cartId) || isNaN(cartNum)) { alert("出现错误"); return; } if (operate == "+") { cartNum += 1; } else if (operate == "-") { if (cartNum == 1) { return; } else { cartNum -= 1; } } console.log("cartId=" + cartId + ";cartNum=" + cartNum); //TODO 这里对应 购物车修改产品数量API 要修改API 为购物车的id;同时通过util.js获取userId //TODO 这里与服务器交换 返回成功后 修改页面中的num var cartData = { cartId: cartId, userId: 3, cartNum: cartNum }; $.ajax({ url: "/aijialeFront/api/user/cart/modifyProductNum.json", type: "POST", data: cartData, dataType: "json", success: function (data) { console.log(data); if (data.code == 200) { $(cartNumDom).val(cartNum); } else { alert(data.error); } }, error: function () { alert("服务器内部故障"); } }); }; //TODO 这里要写blog 直接调用modifyCartProductNum(会执行一遍) 与在function中调用的区别 $("#content span.add").click(function () { modifyCartProductNum("+",this) }); $("#content span.sub").click(function () { modifyCartProductNum("-",this) });
如果modifyCartProductNum中 var thisDom=this;下面通过jquery通过dom关系就得不到相应的dom对象了,因为你调用了modifyCartProductNum函数此时是个变量,即通过modifyCartProductNum作为构造函数的一个对象,此时modifyCartProductNum函数中的this是指这个函数类型的对象。而这里
$("#content span.add").click(function () { modifyCartProductNum("+",this) });
中的this是指$("#content span.add")的dom对象本身,因为你click函数调用了里面的函数里面的this就是dom对象
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇: c++中的delete []异常