2013-03-11 75 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);