我有一个div。在那个div中我有多个元素。有些元素有类' myClass'。我也有一个按钮。单击时,将为div中具有类myClass的每个元素运行foreach循环。为每个元素发送ajaxCall。默认情况下,这些元素的文本颜色为黑色。如果ajax调用成功。我想删除class classBlackFont并添加一个classGreenFont。我尝试了以下代码,遗憾的是,即使ajax调用成功,也不会切换类。
$("#someDiv .myClass").each(function() {
var ajaxData = "myAjaxData";
$.ajax({
type: "POST",
url: "somefile.php",
data: ajaxData,
success: function(data) {
$(this).removeClass('classBlackFont').addClass('classGreenFont');
}
});
});
答案 0 :(得分:13)
this
不会自动引用ajax回调中的正确对象。您可以通过关闭 具有正确值的变量来更改它:
$("#someDiv .myClass").each(function() {
var $this = $(this);
var ajaxData = "myAjaxData";
$.ajax({
type: "POST",
url: "somefile.php",
data: ajaxData,
success: function(data) {
$this.removeClass('classBlackFont').addClass('classGreenFont');
}
});
});
或使用context
option of $.ajax()
:
$("#someDiv .myClass").each(function() {
var ajaxData = "myAjaxData";
$.ajax({
type: "POST",
url: "somefile.php",
data: ajaxData,
context: this,
success: function(data) {
$(this).removeClass('classBlackFont').addClass('classGreenFont');
}
});
});
答案 1 :(得分:0)
上下文:这个
喜欢什么
/**
* Default ajax
*/
$.ajaxSetup({
type: 'post',
dataType: 'json',
context: this
});