2013-03-11 47 views
0

我试图添加和删除的单击事件一类的工作,它是像亮点元素,但没有什么是happing这里:(这里是我的代码: JQ:的setTimeout不是在jQuery的

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

检查错误使用萤火虫的Firefox或其他devTools其他浏览器...... – 2013-03-11 09:01:28

+1

'setTimeout'不是jQuery对象的方法。它不能链接到其他jQuery方法。 – Boaz 2013-03-11 09:01:30

+0

什么是列出和btn ..你可以把html部分吗? – 2013-03-11 09:15:04

回答

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,但它更简单和原生。

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);