2012-07-15 42 views
6

thể trùng lặp:
$(this) doesn't work in a functionjQuery - selector 'này' không hoạt động bên trong hàm callback

Tôi đang viết bài loại bỏ mã trong jQuery, Các cách loại bỏ nó được thực hiện thông qua sau yêu cầu để sao lưu, sau khi máy chủ trả về 200, tôi muốn xóa bài đăng này ở phía máy khách.

$('.delete-post').click(function() { 
    $.post($(this).attr('href'), {}, function(data) { 
     $(this).closest('.post').remove(); 
    }); 
    return false; 
}); 

Tuy nhiên, tôi đã nhận thấy rằng bộ chọn bên trong (dữ liệu) {...) không hoạt động. Tôi cần xóa gần nhất với số $('.delete-post') div với lớp '.post'. Làm thế nào để quản lý vấn đề này? Cảm ơn!

Trả lời

10

$(this) tồn tại trong click event nhưng function(data) { không phải là một phần của sự kiện nhấp chuột rather callback function. Vì vậy, lưu $ (this) trong một số biến ví dụ that để sử dụng sau này.

Hãy thử điều này:

$('.delete-post').click(function(e) { 
    e.preventDefault(); 
    var that = $(this); 
    $.post(that.attr('href'), { }, function(data) { 
     // $(this).closest('.post').remove(); 
     that.closest('.post').remove(); 
    }); 
}); 
+2

Bạn nên giải thích tại sao 'this' có một giá trị khác nhau trong callback. – jfriend00

+0

Tôi đã giải thích cảm ơn vì đã nhắc tôi @ jfriend00 – Adil

+0

Cảm ơn bạn rất nhiều, bây giờ tôi đã có nó! Đơn giản và rõ ràng) – f1nn

Các vấn đề liên quan