методы jQuery в $.успех обработчик AJAX не работает



У меня есть функция:



$(".delete").click(function() {
$.ajax({
url: "ServerHandler.ashx",
data: "mode=delete&item=" + $(this).attr("title"),
success: function() {
$(this).parent().parent().remove();
alert("hi");
}
});
});​


У меня возникает проблема, когда я удаляю родительский объект. Она просто не исчезает. Я попытался спрятаться-не помогло.
Тревога называется нормальной.
Как решить проблему?



Извините за плохой английский.

574   4  

4 ответов:

Вы находитесь внутри другой функции с другим значением this по умолчанию. Передайте значение this из внешней функции с помощью функции $.ajax следующим образом:

$.ajax({
  context: this,
  ...

Потому что this в функции обратного вызова ajax success отличается от функции обратного вызова click. Вы можете кэшировать его в локальную переменную или использовать опцию $.ajax()'s context.

$(".delete").click(function () {
    var $this = $(this);
    $.ajax({
        url: "ServerHandler.ashx",
        data: "mode=delete&item=" + $this.attr("title"),
        success: function () {
            $this.parent().parent().remove();
            alert("hi");
        }
    });
});

Вы пробовали установить параметр context: this, в функции ajax?

Когда срабатывает обработчик успеха, значение this не будет таким же, как было до руки.

Смотрите здесь подробнее: http://api.jquery.com/jQuery.ajax/

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

$(".delete").click(function() {
    $object = $(this);
    $.ajax({
        url: "ServerHandler.ashx",
        data: "mode=delete&item=" + $(this).attr("title"),
        success: function() {
            $object.parent().parent().remove();
            alert("hi");
        }
    });
});​

Comments

    Ничего не найдено.