当我开始输入文本框时,我正在尝试加载gif加载程序。我将它附加到包含keyup文本框的div。我遇到的问题是每次输入一个字母时都会附加加载器,而当我输入第一个字母时我只想附加一次。
function loader(){
$('#contrib_search').bind('keyup', function(){
$('#contrib_text').append('<div id="loader"></div>');
});
}
知道怎么做吗?
感谢
答案 0 :(得分:2)
我的建议是将加载程序硬编码到HTML代码中,然后在.show()
事件处理程序上.keyup()
。
然后例如在.blur()
事件.hide()
中,问题就消失了。
编辑:
var $contrib = $('#contrib_text');
$contrib.bind({
keyup: function(){
$contrib.find("#loader").show();
},
blur: function(){
$contrib.find("#loader").hide();
}
});
答案 1 :(得分:2)
添加加载程序后,您可以解除绑定
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
});
}
答案 2 :(得分:2)
也许这可行:
var pressed = false;
function loader(){
$('#contrib_search').bind('keyup', function(){
if (pressed == false ){
$('#contrib_text').append('<div id="loader"></div>');
pressed = true;
}
});
}
或者不是使用这个布尔值而只是调用unbind而不是我的行说press = true;