SetTimeout在jquery中不起作用

时间:2013-03-11 08:59:32

标签: jquery html css

我正在尝试在click事件上添加和删除一个类,它就像突出显示一个元素,但没有什么在这里讨厌:(。这是我的代码: JQ:

var listed=($('.vis').size())-1,
btn=$('.compare-btn');
  listed < 5 ? listed>=2?btn.show(500):null):btn.text("more").addClass('border').setTimeout(btn.removeClass('border'),2000);

CSS:

.border{border:2px solid red;width:95%!important;}

请让我知道此代码有什么问题

2 个答案:

答案 0 :(得分:5)

setTimeout是一个内置的JavaScript方法,它不是jQuery的一部分,请参阅the MDN article about it.

重构

btn.text("more").addClass('border').setTimeout(btn.removeClass('border'),2000);

要:

btn.text("more").addClass('border');
setTimeout(function(){

    btn.removeClass('border');

},2000);

我还认为三元运算符对你的代码没有多大帮助。它使它有点不可读。请考虑使用更简单的if-else构造,特别是如果您没有使用返回值。

如果您愿意,可以使用jQuery .delay函数来完成与您尝试的like this类似的语法。我建议你继续使用setTimeout,它更简单,更原生。

答案 1 :(得分:0)

setTimeout不是jquery函数。它需要独立:

var listed=($('p').size())-1,
    btn=$('.compare-btn');
    if(listed < 5) {
      if(listed>=2) {
         btn.show(500);
      }
      else {
         null;
      }
    }
    else
    {
       btn.text("more").addClass('border');
    }
}

setTimeout(function(){btn.removeClass('border'); } ,2000);