jquery .click函数的基本延迟

kal*_*tch 11 jquery timedelay

我有他们最基本的jquery函数,但我在文档中找不到一种方法来触发这个点击函数的内容后说1500毫秒:

$('.masonryRecall').click(function(){
  $('#mainContent').masonry();
 });
Run Code Online (Sandbox Code Playgroud)

PS刚刚注意到.delay函数jquery 1.4,虽然我使用的是1.3版本.我不知道更新这个是否会干扰我目前拥有的任何其他JavaScript.

Byr*_*ock 17

你可以使用常规的javascript来做到这一点setTimeout().

$('.masonryRecall').click(function(){
        setTimeout("$('#mainContent').masonry()", 1500);
    });
Run Code Online (Sandbox Code Playgroud)

  • 不要在函数周围使用引号.这相当于使用eval().您应该将其包装在匿名函数中,或者使用[jQuery的代理函数](http://stackoverflow.com/questions/20221163/way-to-execute-jquery-member-functions-inside-settimeout-without-closure) . (2认同)

Dav*_*och 16

您通常应该远离setTimeout/setInterval中的字符串文字.而是使用一个闭包:

setTimeout(function(){ $('#mainContent').masonry(); }, 1500);`
Run Code Online (Sandbox Code Playgroud)

甚至更好地使用它(注意:外部封闭不是真的必要):

(function($){
    var timeout=null;
    $('.masonryRecall').click(function(){
        clearTimeout(timeout);
        timeout=setTimeout(function(){$('#mainContent').masonry();}, 1500);
    });
}(jQuery));
Run Code Online (Sandbox Code Playgroud)