Использование $ (this) в .get не определено в jQuery - PullRequest
2 голосов
/ 03 августа 2010

Я использую сокращенный вызов AJAX, $.get, но когда я пытаюсь сослаться на переменную с помощью $(this), jQuery сообщает, что она не определена.

Вот блок кода:

$('.replaceWithObject').live('click', function(event) {
    var cid = $(this).find('input').val();
    $.get('GetVideoComment.ashx?cid=' + cid, function(data) {
        $(this).html(data);
    });
});

Он находит cid просто отлично, так как $(this) доступен до $.get. Внутри .get $(this) не определено. Установка переменной $(this) до get тоже не работает?

getVideoComment.ashx?cid=628 работает, возвращает флеш-объект. Проблема в том, что $(this) не определен внутри get.

Есть идеи, как сделать то, что я хочу сделать здесь? Или что я делаю не так?

Ответы [ 3 ]

4 голосов
/ 03 августа 2010

Вам необходимо кэшировать ваш первоначальный выбор, чтобы он существовал при срабатывании обратного вызова.

$('.replaceWithObject').live('click', function(event) {
    var $this = $(this);
    var cid = $this.find('input').val();
    $.get('GetVideoComment.ashx?cid=' + cid, function(data) {
        $this.html(data);
    });
});
2 голосов
/ 03 августа 2010

Поскольку возвращаемые данные выглядят как HTML, вы также можете просто использовать load():

Загрузить данные с сервера и поместить возвращенный HTML в соответствующий элемент.

$('.replaceWithObject').live('click', function(event) {
    var cid = $(this).find('input').val();
    $(this).load('GetVideoComment.ashx?cid=' + cid);
    // or $(this).load('GetVideoComment.ashx', {cid: cid});
});
2 голосов
/ 03 августа 2010

Попробуйте:

$('.replaceWithObject').live('click', function(event) {
    var that = $(this);
    var cid = that.find('input').val();
    $.get('GetVideoComment.ashx', {'cid': cid}, function(data) {
        that.html(data);
    });
});

Проблема в том, что this внутри функции get все больше не .replaceWithObject Если вы кешируете это в событии click и затем используете этот кешэто будет работать для вас.

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