2013-10-28 6 views
1

Так я посылаю запрос Ajax, как показано ниже

$('a.new_thumb_update').click(function(e) 
{ 
    e.preventDefault(); 
    share_id = $(this).attr('share_id'); 

    $.post('http://studeez.net/resource_layout_files/includes/thumbs_up.php', 
    {share_id:share_id}, 
    function(data) 
    { 
     alert(data); 
     $(this).parent().parent().find('div.thumbs_up').hide(); 
    }); 
}); 

Кодекса функций и ДО функции обратного вызова, где я получить уведомление обратной связи.

$(this).parent().parent().find('div.thumbs_up').hide(); 

Если я заменил $ (этот) на фактический элемент, он работает. как показано ниже

$('a.new_thumb_update').parent().parent().find('div.thumbs_up').hide(); 
+3

'Function scope' –

+1

Причина, по которой' $ (this) 'не работает, потому что вы ввели другую функцию. '$ (this)' теперь ссылается на объект, который вы назвали '$ .post', на котором нет ничего – Jonathon

ответ

0

Попробуйте это,

$('a.new_thumb_update').click(function(e){ 
    e.preventDefault(); 
    share_id = $(this).attr('share_id'); 
    var self=this;// assign this to self and use it 
    $.post('http://studeez.net/resource_layout_files/includes/thumbs_up.php', 
     {share_id:share_id}, 
     function(data){ 
     alert(data); 
     $(self).parent().parent().find('div.thumbs_up').hide();// use self instead of this 
    }); 
}); 
0
$('a.new_thumb_update').click(function(e) 
{ 
    e.preventDefault(); 
    var _this=$(this);// set this in here 
    share_id = _this.attr('share_id'); 

    $.post('http://studeez.net/resource_layout_files/includes/thumbs_up.php', 
    {share_id:share_id}, 
    function(data) 
    { 
     alert(data); 
     _this.parent().parent().find('div.thumbs_up').hide(); 
    }); 
}); 
5

Вам нужно кэшировать $(this) здесь:

$('a.new_thumb_update').click(function (e) { 
    e.preventDefault(); 
    var $self = $(this); 
    share_id = $self.attr('share_id'); 

    $.post('http://studeez.net/resource_layout_files/includes/thumbs_up.php', { 
     share_id: share_id 
    }, function (data) { 
     alert(data); 
     $self.parent().parent().find('div.thumbs_up').hide(); 
    }); 
}); 

в $(this) не доступен в АЯКС $.post метод JQuery.

+0

ах! Я не могу поверить, что этот маленький кусочек кода заставил меня заняться в обед. –

Смежные вопросы