在长时间执行过程之前和之后使用Jquery更改元素css
Change element's css before and after long process execution with Jquery
我有一个问题,我认为这在javascript上很常见,但无法确定要搜索什么。
JSfeedle等效:https://jsfiddle.net/Draykoon/55jzr2uq/19/@Joe https://jsfiddle.net/Draykoon/55jzr2uq/20/
我想在onclick时更改箭头的颜色,然后执行一些代码并将颜色设置回原始颜色。
我以睡眠为例,但它是一个需要时间的函数,但不知道需要多少时间。考虑以下代码:
function sleep(seconds)
{
var e = new Date().getTime() + (seconds * 1000);
while (new Date().getTime() <= e) {}
}
$('i.fa-chevron-circle-left').click(function(){
var id = $(this).attr("id");
$($("div.tab-pane")[id]).find("i.fa-chevron-circle-left").css("color","#ff9900");
sleep(1);
$($("div.tab-pane")[id]).find("i.fa-chevron-circle-left").css("color","#8BBE22");
});
#ff9900的颜色没有显示在屏幕上,这就像这行代码被跳过,更糟糕的是,当我不重置颜色为#8BBE22,改变只出现在调用"sleep(1)"之后,我希望用户得到通知。
$('i.fa-chevron-circle-left').click(function(){
var id = $(this).attr("id");
$($("div.tab-pane")[id]).find("i.fa-chevron-circle-left").css("color","#ff9900");
sleep(1);
//color showing after 1 sec
});
我知道$($("div.tab-pane")[id]).find("i.fa-chevron-circle-left")
是不合适的,我试着$("div.tab-pane:nth-child(" +(id+1).toString() + ")" + " i.fa-chevron-circle-left" )
我得到了相同的结果,颜色改变了,但有延迟。
我想我错过了javascript的一个重要行为。
应该用调用其他函数来代替睡眠,我不知道执行的时间(在现实中重画一个图)
可以使用setTimeout
在指定的延迟后调用函数或执行代码段。
$('i.fa-chevron-circle-left').click(function(){
var self = $(this);
self.css("color","#ff9900");
//Add your code, which you want to execute
//Reset color after 1 second
setTimeout(function(){
self.css("color","#8BBE22");
}, 1000)
});
我会调用一个函数并传递id,这样它就知道要更改哪个箭头了,像这样:
$('i.fa-chevron-circle-left').click(function(){
var $this = $(this);
var id = $this.attr("id");
$this.css("color","#ff9900");
myFunction(id);
});
myFunction(id) {
// do something
$("#" + id).css("color","#8BBE22");
}
这是因为在应用DOM更改之前,脚本将完整地运行,因为脚本是同步的。基本上,设置初始颜色的代码需要与设置第二种颜色的代码在一个单独的线程中发生,否则它们将同时应用。
要实现这一点,正如@Setpal所指出的,你可以使用setTimeout。
更新代码
@Setpal代码的修改版本
$('i.fa-chevron-circle-left').click(function(){
var self = $(this);
self.css("color","#ff9900");
setTimeout(function(){
//Add your code, which you want to execute
self.css("color","#8BBE22");
}, 0)
});
- 每个选择器的Jquery css颜色都在变化,但字体大小却没有变化
- 自定义Jquery css下拉菜单问题
- jQuery css可见性在load方法中不起作用
- PNG图像被覆盖,但每个图像都有一个链接可以更改,每次一个-Javascript/jQuery/CSS
- Jquery CSS背景图像旋转
- 使用jQuery.css()方法时,是否需要转义任何字符
- 将jQuery.css()与变量一起使用
- 如何在jQuery.CSS()方法中为所有浏览器编写CSS代码
- 使用 js/jQuery/css 在重力形式中覆盖 !important
- 投资组合扩展器宽度 - Jquery CSS
- jQuery .css body opacity
- 当到达屏幕顶部时,jquery/css转换
- 如何防止文本区域在打字和进入页面底部时跳舞?:JQuery/CSS
- 在没有特定属性的情况下使用jQuery.css()
- 如何在HTML+jQuery+CSS中显示弹出窗口
- jQuery css"点击“;不会'更改日历中选定的月份后无法工作
- jQuery .css() 返回像素而不是百分比
- jquery css没有'我的情况不太好
- Jquery/CSS:全尺寸背景图像
- jquery.css()中的变量