jquery神秘'这'元素

时间:2012-06-19 13:54:56

标签: javascript jquery this

  

可能重复:
  jQuery/JavaScript “this” pointer confusion

var timeOut = 1000;

$('#'+form +' :input').each(function() {

    thisObj = "";
    if ($(this).parent().parent().find(".incorrect").css('display') == "inline-block" || $(this).attr('value') == "") {
        if ($(this).attr('id') != "submitbtn") {
            thisObj = $(this);
            submit_this++;
            colourfading(this, 'rgba(56, 183, 0, 1)', 'rgba(255, 30, 0, .2)', 'rgb(210,210,210)', 'rgb(250,250,250)');
        }
    }

    var delaySubmit = (function(){
        var timer = 0;
        return function(callback, ms){
            setTimeouts(callback, ms, thisObj);
        };
    })();

    delaySubmit(function(){
        do_sendRequest(ajaxObj, thisObj, true);
    }, timeOut );
    timeOut = timeOut + 1000;
});

这是我在按表单上的提交按钮时使用的一些代码。

你可以看到colourFading函数使用“...(this,'...”)。 this元素是'.each(function(){'call。

的输入元素

我在我写的colourfading函数中做了一个完美的工作,每个输入元素都有一个漂亮的红色,表明它有问题,然后逐渐淡化为白色。

现在是“有趣”的部分。正如你所看到的,我把'thisObj'变量链接为相同的'this',那就是传递给colourFading,

然而,当我查看thisObj的.attr('id')时,它表示'this'实际上是我点击的提交按钮的表示。

这很奇怪,因为当我要求'this'中的id被发送到colourfading(在colourfading函数中)时,它很好地显示了输入元素的id。

我已经尝试过设置thisObj = this,thisObj = $(this),就在.each(function(){part'开始之后,在colourfading之前,它似乎有正确的元素,它只是不工作

我在这里做错了吗?不应该这样工作吗???

0 个答案:

没有答案