как получить доступ к $ (this) внутри функции обратного вызова ajax success - PullRequest
30 голосов
/ 15 апреля 2010

Кажется, я не могу получить доступ к $ (this) внутри функции успеха jquery ajax. пожалуйста, смотрите код ниже.

 $.ajax({
            type: 'post',
            url: '<?php echo site_url('user/accept_deny_friendship_request')?>',
            data: 'action='+$action+'&user_id='+$user_id,
            success: function(response){
               //cannot access $(this) here $(this).parent().remove();
            }
        });

Ответы [ 5 ]

54 голосов
/ 15 апреля 2010

Что должно быть $(this)? Если у вас есть ссылка на нее вне этой функции, вы можете просто сохранить ее в переменной.

$('#someLink').click(function() {
    var $t = $(this);
    $.ajax( ... , function() {
        $t.parent().remove();
    });
}
53 голосов
/ 05 октября 2012

Проверьте опцию контекста - у меня отлично работает:

$.ajax({
    context: this,
    type: 'post',
    url: '<?php echo site_url('user/accept_deny_friendship_request')?>',
    data: 'action='+$action+'&user_id='+$user_id,
    success: function(response){
       //can access this now!
    }
});
5 голосов
/ 12 июня 2015

Если вы хотите, чтобы this было this в контексте вашего вызова ajax, вы также можете использовать .bind(), как показано ниже:

$.ajax({
  url: 'some_url'
  success: function(data) {
    // do something 'this'
  }.bind(this)
})

Связывает значение this внутри обратного вызова успеха с this снаружи.

4 голосов
/ 15 апреля 2010

Попробуйте позвонить $.proxy, чтобы изменить область действия this внутри функции:

$.ajax({
    success: $.proxy(function(response) { $(this).parent().bla(); }, $(this));
});
0 голосов
/ 15 апреля 2010

Я не вижу $(this) ссылки на что-либо, но более простым способом было бы дать элементу класс или идентификатор и ссылаться на него из jquery:

Вместо:

$(this).parent().remove();

Вы можете сделать:

$('#element_id').parent().remove();

Примечание: Здесь я предполагаю, что вы имеете дело с одним элементом / итерацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...