Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.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
Jquery更改css太晚了?_Jquery - Fatal编程技术网

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毫秒也可能相当慷慨。没问题。如果答案有用,别忘了接受