试图推迟jquery事件

时间:2014-05-03 05:02:15

标签: javascript jquery

我正在尝试延迟keyup jquery事件。要延迟的事件是:

$(document).ready(function(){
  $("#leftsettingswindow").on("keyup", "#fontsize2", function(){
    var txtVal = this.value; 
    $('#content').css("font-size", txtVal + "%");
  });
});

我试图使用延迟:

$(document).ready(function(){
  $("#leftsettingswindow").on("keyup", "#fontsize2", function(){
    var txtVal = this.value; 
    $('#content').delay(2000).css("font-size", txtVal + "%");
  });
});

我也试图像这样使用setTimeout

$(document).ready(function(){
  $("#leftsettingswindow").on("keyup", "#fontsize2", setTimeout(function(){
    var txtVal = this.value;
    $('#content').css("font-size", txtVal + "%");}, 3000);
  );
});

有人可以向我解释为什么上述拖延战术失败了吗?

3 个答案:

答案 0 :(得分:1)

您无法延迟回调功能。而是延迟你想要的。

$(document).ready(function () {
    $("#leftsettingswindow").on("keyup", "#fontsize2", function () {
        setTimeout(function () {
            var txtVal = this.value;
            $('#content').css("font-size", txtVal + "%");
        }, 3000);
    });
});

答案 1 :(得分:0)

试试这个

     $(document).ready(function(){
          $("#leftsettingswindow").on("keyup", "#fontsize2", 
           function() {
         setTimeout ( function () {

        var txtVal = this.value; $('#content').css("font-size", txtVal + "%");
        },1000);
        });
});

答案 2 :(得分:0)

您无法使用.delay()来显示本机函数调用的执行。它用于在quene中显示后续jquery效果的执行。 "的setTimeout"如果您解决回调问题,可以满足您的需求。

根据您的实现,您尝试获取" fontsize item"的值。 as" #content"字体大小。根本原因是点击事件处理程序注册的参数传递错误。第三个参数是回调处理程序,一旦触发事件就会调用它。你应该传递一个函数对象而不是一个" setTimeout"功能调用。

$("#leftsettingswindow").on("keyup", "#fontsize2", setTimeout(
  function(){
    var txtVal = this.value; 
    $('#content').css("font-size", txtVal + "%");
  }, 3000)
);

尝试这样实现:

$("#leftsettingswindow").on("keyup","#fontsize2",function(){
  var that = this;
  var $content = $("#content");
  setTimeout(function(){
    $content.css('font-size',that.value+"%");
  },2000);
});

这是jsFiddle demo