Jquery选择器(this)不在函数中

时间:2013-07-17 01:54:36

标签: jquery this

我在这里有一个小代码,我无法弄清楚是否有什么问题,我认为我的代码没问题,但我怀疑jquery中的this选择器在.post请求后似乎没有运行。

这是我的代码:

$('.days').each(function() {
        day = jQuery.trim($(this).attr('id'));
        //this validates if there are events in this day
        $.post('includes/genAct.php', { thisDay: day, action: 'getMyEvent' }, function(data) {
            if(data != 0) {
                $(this).css('background', '#000').css('color', 'red');
            } 
        });
    });

如果我对返回的data发出警报,它似乎正常工作。那里有任何后续想法吗?谢谢

2 个答案:

答案 0 :(得分:2)

this不是固定变量,它会根据上下文而变化。

post成功处理程序中,它可能与外部不一样。

我建议缓存结果:

var $this = $(this);

从那时起,您可以使用$this来引用当前元素,无论您在each函数中的哪个位置。

答案 1 :(得分:1)

您也可以使用each这样的功能:

$('.days').each(function(i, val) {
 //the variable val returns the current element
});

您可以使用val代替this

i顺便说一下当前的索引..:]