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中——其他任何函数都不会使用它。