Jquery 执行keyup一次

Jquery 执行keyup一次,jquery,onkeyup,Jquery,Onkeyup,当我开始在文本框中键入内容时,我正在尝试加载gif加载程序。我将它附加到包含keyup上的文本框的div中。我遇到的问题是,每次我键入一个字母时都会追加加载器,而我只想在键入第一个字母时追加一次加载器 function loader(){ $('#contrib_search').bind('keyup', function(){ $('#contrib_text').append('<div id="loader"></div>');

当我开始在文本框中键入内容时,我正在尝试加载gif加载程序。我将它附加到包含keyup上的文本框的div中。我遇到的问题是,每次我键入一个字母时都会追加加载器,而我只想在键入第一个字母时追加一次加载器

function loader(){

    $('#contrib_search').bind('keyup', function(){
        $('#contrib_text').append('<div id="loader"></div>');
    });
}
函数加载器(){
$('contrib_search').bind('keyup',function(){
$('contrib_text')。附加('');
});
}
知道怎么做吗?

谢谢

我的建议是将硬代码加载到HTML代码中,然后在
.keyup()
事件处理程序上显示它

然后,例如,在
.blur()
事件
.hide()
中单击该按钮,问题就消失了

编辑:


添加加载程序后,可以解除键合绑定

function loader(){

    $('#contrib_search').bind('keyup', function(){
        $('#contrib_text').append('<div id="loader"></div>');
        $('#contrib_search').unbind('keyup');  //or $(this).unbind probably a tad faster
    });
}
函数加载器(){
$('contrib_search').bind('keyup',function(){
$('contrib_text')。附加('');
$('contrib_search')。解除绑定('keyup');//或$(this)。解除绑定可能要快一点
});
}

也许这样可以:

var pressed = false;
    function loader(){

        $('#contrib_search').bind('keyup', function(){
            if (pressed == false ){
                $('#contrib_text').append('<div id="loader"></div>');
                pressed = true;
            }
        });
    }
var pressed=false;
函数加载器(){
$('contrib_search').bind('keyup',function(){
如果(按下==false){
$('contrib_text')。附加('');
按下=真;
}
});
}

或者不使用这个布尔值,只需调用unbind,而不是我的行表示pressed=true

使用“one”可以帮助:

function loader() {
  $('#contrib_search').one('keyup', function () {
    $('#contrib_text').append('<div id="loader"></div>');
  });
}
函数加载器(){
$('contrib#u search')。一个('keyup',函数(){
$('contrib_text')。附加('');
});
}

为什么不让加载程序
显示:默认情况下无
,然后在按键上交换类
function loader() {
  $('#contrib_search').one('keyup', function () {
    $('#contrib_text').append('<div id="loader"></div>');
  });
}