0

我正在尝试在元素更新时更改它们的背景颜色。

当响应从服务器返回时,我想将元素的背景颜色更改一秒钟左右,然后将其更改回原来的颜色。我可以更改背景颜色,但不能在同一个调用中将其更改回来。

这是我到目前为止所拥有的:

$.each(theArray,function(intIndex,objValue){
    $("#" + objValue.id).parent().css('background-color','red');
});
//NEED TIMING EVENT FOR DELAY 
$.each(theArray,function(intIndex,objValue){
    $("#" + objValue.id).parent().css('background-color','transparent');
});

第一个循环工作正常,但我无法让另一个循环工作。

我试过这样:

$.each(theArray,function(intIndex,objValue){
     $("#" + objValue.id).parent.css('background-color','red').delay(1000).css('background-color','transparent');
});

这也没有做任何事情。

所以我不确定问题是什么。有什么建议么?

4

4 回答 4

4
$.each(theArray,function(intIndex,objValue){
    var $el = $("#" + objValue.id).parent().css('background-color','red');
    setTimeout(function(){
        $el.css('background-color', '');
    }, 1000);
});

这是一个演示:http: //jsfiddle.net/Wnntu/

于 2012-04-16T17:57:11.050 回答
0

您可能正在寻找更多.css('background-color','')。这将从元素样式中删除它,因此应用链上的最后一个。但不确定为什么透明不起作用。

更新,

见这里:http: //jsfiddle.net/

于 2012-04-16T17:56:38.300 回答
0

试试这个:

$.each(theArray,function(intIndex,objValue){
    $("#" + objValue.id).parent().css('background-color','red').delay(1000).queue(function() {
        $(this).css('background-color','');
        $(this).dequeue();
    });
});
于 2012-04-16T17:56:41.033 回答
0

.delay()仅适用于动画效果队列或自定义队列,没有 jQuery UI 的动画不适用于颜色...

相反,您可以使用setTimeout()调用:

$.each(theArray,function(intIndex,objValue){
    var myObj = $("#" + objValue.id).parent().css('background-color','red');
    setTimeout(function() {
        myObj.css('background-color','transparent');
    },1000);
});
于 2012-04-16T17:57:00.957 回答