Jquery更改css太晚了?
我有一些代码:Jquery更改css太晚了?,jquery,Jquery,我有一些代码: $(document).on('click', '.delete',function(e){ e.preventDefault(); $('.selector').css({'color':'#cc0000'}); if(confirm('Do you want to remove')){ $.ajax({ ... }); } else{ // $('.selector
$(document).on('click', '.delete',function(e){
e.preventDefault();
$('.selector').css({'color':'#cc0000'});
if(confirm('Do you want to remove')){
$.ajax({
...
});
}
else{
// $('.selector').css('color','');
}
});
但css在“确认”后会改变颜色。如何在“确认”之前显示红色?问题是因为
confirm()
是一个模式调用,它会阻止浏览器的UI线程更新。要解决此问题,您可以将confirm()
放入setTimeout()
中,并进行很短的延迟。另外请注意,除非没有其他选择,否则应避免使用css()。改为应用类。试试这个:
$(document).on('click', '.delete',function(e){
e.preventDefault();
$('.selector').addClass('active');
setTimeout(function() {
if (confirm('Do you want to remove')) {
$.ajax({
// ...
});
}
else {
$('.selector').removeClass('active');
}
}, 25);
});
.active{color:#C00;}
问题是因为confirm()
是一个模式调用,它会阻止浏览器的UI线程更新。要解决此问题,您可以将confirm()
放入setTimeout()
中,并进行很短的延迟。另外请注意,除非没有其他选择,否则应避免使用css()。改为应用类。试试这个:
$(document).on('click', '.delete',function(e){
e.preventDefault();
$('.selector').addClass('active');
setTimeout(function() {
if (confirm('Do you want to remove')) {
$.ajax({
// ...
});
}
else {
$('.selector').removeClass('active');
}
}, 25);
});
.active{color:#C00;}
您需要使用回调函数。不幸的是css()
不支持这一点。但是您可以使用animate()
,时间为0秒
$(this).animate({CSS-PARAMETERS},0,function(){
if(confirm(...)){
...
}
});
您需要使用回调函数。不幸的是css()
不支持这一点。但是您可以使用animate()
,时间为0秒
$(this).animate({CSS-PARAMETERS},0,function(){
if(confirm(...)){
...
}
});
选中此项:
$(document).on('click', '.delete',function(e){
e.preventDefault();
$('.selector').css({'color':'#cc0000'});
window.setTimeout(function()
{
if(confirm('Do you want to remove')){
$.ajax({
...
});
}
else{
// $('.selector').css('color','');
}
}
, 500);
});
选中此项:
$(document).on('click', '.delete',function(e){
e.preventDefault();
$('.selector').css({'color':'#cc0000'});
window.setTimeout(function()
{
if(confirm('Do you want to remove')){
$.ajax({
...
});
}
else{
// $('.selector').css('color','');
}
}
, 500);
});
我建议setTimeout
$(文档).on('click','delete',函数(e){
e、 预防默认值();
$('.selector').css({'color':'#cc0000'});
setTimeout(函数(){
if(确认('you want remove')){
}
}, 100);
});代码>
删除?
我建议setTimeout
$(文档).on('click','delete',函数(e){
e、 预防默认值();
$('.selector').css({'color':'#cc0000'});
setTimeout(函数(){
if(确认('you want remove')){
}
}, 100);
});代码>
删除?
将值500更改为您的需要。将值500更改为您的需要。您为什么在意?如果您使用的是对话框,那么用户的注意力应该集中在对话框上,而不是页面上无法与之交互的内容上。特别是如果你只是想在他们关闭对话框后立即将其更改回去,我想向用户展示他将删除的内容。但是你甚至不能确定用户是否可以在屏幕上看到该元素。如果你想要一个好的用户体验,那么你可能不应该首先使用内置的确认对话框我不明白你的意思。用户可以查看所有帖子。显示用户想要删除的帖子很好,所以无论屏幕大小有多小,所有帖子都会显示在屏幕上?你确定帖子永远不会隐藏在确认对话框下面吗?我看不到你的设计,所以我不能提供一个更好的建议,我只是说这听起来不太合适。但那没关系,你想干什么就干什么你在乎什么?如果您使用的是对话框,那么用户的注意力应该集中在对话框上,而不是页面上无法与之交互的内容上。特别是如果你只是想在他们关闭对话框后立即将其更改回去,我想向用户展示他将删除的内容。但是你甚至不能确定用户是否可以在屏幕上看到该元素。如果你想要一个好的用户体验,那么你可能不应该首先使用内置的确认对话框我不明白你的意思。用户可以查看所有帖子。显示用户想要删除的帖子很好,所以无论屏幕大小有多小,所有帖子都会显示在屏幕上?你确定帖子永远不会隐藏在确认对话框下面吗?我看不到你的设计,所以我不能提供一个更好的建议,我只是说这听起来不太合适。但那没关系,你想干什么就干什么,这很管用。但它可以有很少的时间和css不显示?或者它总是有效?我不确定你的确切意思,但如果需要,你可以降低延迟。减少25
数字。这是超时在执行之前将等待的毫秒数。我的意思是超过25毫秒可能没有足够的时间?在这种情况下,应增加持续时间。或者它总是有效?25毫秒就足够了。即使是10毫秒也可能相当慷慨。没问题。如果答案有用,别忘了接受它是的,它是有效的。但它可以有很少的时间和css不显示?或者它总是有效?我不确定你的确切意思,但如果需要,你可以降低延迟。减少25
数字。这是超时在执行之前将等待的毫秒数。我的意思是超过25毫秒可能没有足够的时间?在这种情况下,应增加持续时间。或者它总是有效?25毫秒就足够了。即使是10毫秒也可能相当慷慨。没问题。如果答案有用,别忘了接受