这是我的代码
$(".library-fields-container div.field-content img").click(function(){
var nid = getImageNodeID($(this).siblings(".image-span").text());
$.ajax({
url: Drupal.settings.basePath + 'views/ajax',
type: 'POST',
dataType: 'json',
data: 'view_name=fehrest&view_display_id=block_1&view_args='+nid,
success: function(response) {
var output = response[1].data;
alert(output);
$(this).hide();
},
error: function(data) {
alert('An error occured!');
}
});
});
我确定output
变量打印的内容并不是空的,因为alert函数会显示它的内容。
问题是当我放
时它不会隐藏$(this)
$(this).hide();
在Ajax调用之前的click事件开始时,它隐藏了图像。
使用$(this)
对象的Ajax回调函数是什么?
答案 0 :(得分:1)
在此上下文中 - this
不是元素。
在ajax调用this
之前保存到self
变量。像
var self = this;
$.ajax({
...
success: function(response) {
var output = response[1].data;
alert(output);
$(self).hide();
}
});
答案 1 :(得分:0)
$(".library-fields-container div.field-content img").click(function(){
var target = $(this);
var nid = getImageNodeID($(this).siblings(".image-span").text());
$.ajax({
url: Drupal.settings.basePath + 'views/ajax',
type: 'POST',
dataType: 'json',
data: 'view_name=fehrest&view_display_id=block_1&view_args='+nid,
success: function(response) {
var output = response[1].data;
alert(output);
target.hide();
},
error: function(data) {
alert('An error occured!');
}
});
});