我正在尝试在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;}
请让我知道此代码有什么问题
答案 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);