2012-03-12 72 views
1

我有這樣一段代碼:模仿谷歌與「jQuery的延遲」和「淡出」

$(input).keyup(function() { 

    var searchTerms = getSearch(); 
      doSearch(searchTerms); 

}); 

功能doSearch給我的結果(搜索結果)列表。我想用「褪色」出來KEYUP結果,然後設置一個計時器或事件.delay然後執行它提供的結果的函數,所以要模仿谷歌:

  1. KEYUP - >淡出50%
  2. 等待一段時間
  3. 做功能doSearch(searchTerms);

我知道該怎麼做的事件,但我似乎無法把它們放在一起。

回答

1

jQuery碰巧有兩件事要解決這個問題。

.delay()

jQuery.queue()

如果你想拖延例如您需要將它放入fx隊列或單獨隊列中的觸發器函數。下面是如何工作的:

$("#myElement").delay(2000).queue(function(){ 
    var searchTerms = getSearch(); 
    doSearch(searchTerms); 
    $(this).dequeue(); 
}); 

如果你不想使用默認的FX-隊列,這是怎麼排隊的功能,在你自己的隊列:

$("#myElement").delay(2000, "myQueue").queue("myQueue", function(){ 
    var searchTerms = getSearch(); 
    doSearch(searchTerms); 
}).dequeue("myQueue"); 
+0

這看起來像一個事件..我沒有問題做事件,它與他們的功能,我有一個問題。所以'$(this).trigger(「click」);'我怎麼用'doSearch(searchTerms);' – Youss 2012-03-12 11:20:08

+0

回答更新。 – 2012-03-12 11:52:39

1

使用jQuery的fadeTohttp://api.jquery.com/fadeTo/和JS自己的setTimeout來做到這一點。有點像:

$('#myInput').keyup(function(){ 
    $('.stuffToFade').fadeTo('fast',0.5,function(){ //fade all '.stuffToFade' elements to 0.5 and execute the following callback 
     setTimeout(function(){ //the following function will be executed after 500ms 
     var searchTerms = getSearch(); 
     doSearch(searchTerms); 
     }, 500); //this is where the delay is set 
    }); 
}); 
+0

它似乎沒有工作..(不知道爲什麼) – Youss 2012-03-12 10:48:35

+1

然後,我們不能幫助你(不知道在哪裏)顯示更多的代碼,一些錯誤,任何似乎是問題,我們會很樂意幫助你 – 2012-03-12 10:53:36

+0

@Joeri Minnekeer我認爲代碼有問題,而不是我的代碼。我不能指出它是什麼,因爲我沒有寫上面的代碼。所以不要以爲這個夢想就在我的身邊......你可以做更多的思考。 – Youss 2012-03-12 11:16:42

0

功能點擊處理:

$(this).click(function(){ 
    doSomeFunction(variable); 
}); 

或自定義事件:

$(this).doSearch(function(searchTerms){ 
    getyourSearchOn(); 
});