Jquery:更改post回调中的子属性

Jquery:更改post回调中的子属性,jquery,dom,Jquery,Dom,我正在尝试更改POST success回调中DOM子级的值: $('body').on('click','.btn_like', function(e) { e.preventDefault(); $.post($(this).attr('href'), function(data) { $(this).children('.nb_like').text('data'); }); }); 我不知道这为什么不起作用!我所能想到的是,这个变量在回调中可能不同

我正在尝试更改POST success回调中DOM子级的值:

$('body').on('click','.btn_like', function(e) {
    e.preventDefault();
    $.post($(this).attr('href'), function(data) {
        $(this).children('.nb_like').text('data');
    });
});
我不知道这为什么不起作用!我所能想到的是,
这个
变量在回调中可能不同,但我对Jquery一无所知,所以我不知道如何修复它


如果我把
$(this).children('.nb_-like').text('data')在帖子之外,那么它工作得很好,所以这真的是让我恼火的请求

定义上下文变量:

$('body').on('click','.btn_like', function(e) {
    e.preventDefault();
    var that = $(this);

    $.post($(this).attr('href'), function(data) {
        that.children('.nb_like').text('data'); <--This appends the string of "data", remove the quotes if you want to append your callback data.
    });
});
$('body')。on('click','btn_like',函数(e){
e、 预防默认值();
var,该值=$(此值);
$.post($(this.attr('href'),函数(数据){

.children('.nb_like').text('data');很好,它工作了!你能解释一下为什么$(this)不能在回调中使用吗?在你的post回调中,
$(this)
现在指的是
$.post
,在post调用之前定义一个新变量(并分配它
$(this)
,您可以保留
$(this)
的原始上下文并使用它。