我正在对点击事件进行一些ajax处理工作正常但现在我想在成功函数上添加class
我正在使用$(this).addClass("cover");
但没有发生任何事情。如果我使用类似$('.dz-cover').addClass("cover");
的方法来定位类添加类的意思,它可以正常工作,但它添加类所有带有类名'.dz-cover'
的链接标记我不想要我只是想要仅添加我正在点击的链接的类。我的代码在
$("#dropzonePreview").on("click", "a.dz-cover", function () {
var id = $(this).data('id');
$.ajax({
type: 'POST',
url: 'attachment/cover',
data: {id: id},
dataType: 'html',
success: function (data) {
$(this).addClass("cover");
}
});
});
答案 0 :(得分:3)
这是因为在ajax调用中丢失了元素a.dz-cover
的上下文,您可以使用选项上下文在ajax调用中设置上下文:
$("#dropzonePreview").on("click", "a.dz-cover", function () {
var id = $(this).data('id');
$.ajax({
type: 'POST',
url: 'attachment/cover',
context:this,
data: {id: id},
dataType: 'html',
success: function (data) {
$(this).addClass("cover");
}
});
});
答案 1 :(得分:2)
this
在这种情况下不起作用,因为success
是另一个块。
$("#dropzonePreview").on("click", "a.dz-cover", function () {
var elm = $(this);
var id = elm.data('id');
$.ajax({
type: 'POST',
url: 'attachment/cover',
data: { id: id },
dataType: 'html',
success: function (data) {
elm.addClass("cover");
}
});
});
答案 2 :(得分:0)
您正在尝试脱离上下文使用$(this)
。你应该将它设置为一个变量,以便能够在你的AJAX回调中使用它,如下所示:
$("#dropzonePreview").on("click", "a.dz-cover", function () {
var id = $(this).data('id');
var element = $(this);
$.ajax({
type: 'POST',
url: 'attachment/cover',
data: {id: id},
dataType: 'html',
success: function (data) {
element.addClass("cover");
}
});
});