问题描述:在点击事件处理函数中常会调用ajax和服务器进行数据交互,而交互回来的结果常常又作用于此点击对象或其他对象,但是在ajax内部直接使用$(this)并不能拿到点击的对象。
下面的点击事件的 this1 处的$(this)
指的是点击对象(按钮),而在 ajax 内部的$(this)
指的是window对象
,因此
想要在 ajax 内部使用点击对象需要提前将this
对象赋值给变量,在ajax内部使用变量去操作点击的对象。
$('.btn_delete').click(function () {
console.log($(this)); //this1
var _this = this;
var data = {};
data['id'] = $(this).key('id');
$.ajax({
url:url,
type:"post",
data:data,
dataType:"json",
success:function (reg) {
if(reg>0){
console.log($(this)); //this2 这时的this是ajax的对象,并不是上面点击事件的对象
console.log($(_this)); //此时的选择对象才是点击事件的对象
}
}
});
});