Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在代码结束前触发css更改_Javascript_Jquery - Fatal编程技术网

Javascript 在代码结束前触发css更改

Javascript 在代码结束前触发css更改,javascript,jquery,Javascript,Jquery,我肯定这个问题已经被问过了,但是我找不到好的关键字来为谷歌提供信息。我甚至找不到一个好题目来回答我的问题。 我想这样做: $(".selector").click(function() { $(this).css("background-color", "red"); if (confirm("Do you want to do this ?") { // do this } else { $(this).css("background-c

我肯定这个问题已经被问过了,但是我找不到好的关键字来为谷歌提供信息。我甚至找不到一个好题目来回答我的问题。 我想这样做:

$(".selector").click(function() {
    $(this).css("background-color", "red");
    if (confirm("Do you want to do this ?") {
        // do this
    } else {
        $(this).css("background-color", "transparent");
    }
});
但是css更改只有在我确认后才会触发。我如何在确认前(或确认期间)发射它


谢谢。

我敢打赌,这只是添加一个延迟(即使只有0毫秒)的简单问题。这将确保页面在确认消息出现之前重新绘制

$(".selector").click(function() {
    $(this).css("background-color", "red");
    var _this = this;
    function confirmCode(){
        if (confirm("Do you want to do this ?") {
            // do this
        } else {
            $(_this).css("background-color", "transparent");
        }
    }
    setTimeout(function(){confirmCode()}, 0)
});

编辑:添加完整的代码

它可以工作!我希望有一个不需要其他函数的解决方案,也许有一些jquery的魔力,但我想这是一个javascript限制。实际上,在确认消息出现之前,我不需要重新绘制。我可能在“确认”对话框中。但即使我等了1个小时,它也永远不会重新绘制,直到我单击“确定”,代码被终止。@Matthieu是的,这是一个与CSS一致的浏览器怪癖。不幸的是,任何CSS更改的对话框都需要这样做。不需要向setTimeout传递新函数,可以这样调用它:setTimeout(confirmConde,0)@robrich匿名函数确保调用保持在作用域内。我很确定,如果不使用它,
setTimeout
假设函数是全局函数(或者更准确地说,是
窗口的成员)。@JeffreySweeney很好,你说得对。没有包装器函数,它看起来是全局范围的。在本例中,您可以将整个confirmCode函数放入setTimeout中——其他任何函数都不会使用它。