Click event keep firing
问题描述:
我完全不知道为什么会发生这种情况,但下面的代码似乎在所有浏览器中执行了大量的时间。Click event keep firing
$('#save_albums').click(function(){
for(var i = 1; i <= 5; i++){
html = $('#your_albums ol li').eq(i).html();
alert(html);
}
});
显得颇为无辜的,我...
以下是完整
$(function(){
$('#query').keyup(function(){
var text = encodeURI($(this).val());
if(text.length > 3){
$('#results').load('search.php?album='+text, function(){
$('.album').hover(function(){
$(this).css('outline', '1px solid black')
},function(){
$(this).css('outline', 'none')
});
$('.album').click(function(){
$('#fores').remove();
$('#yours').show();
if($('#your_albums ol li').length <= 4){
albumInfo = '<li><div class="album">' + $(this).html() + '</div></li>';
if($('#your_albums ol li').length >= 1){
$('#your_albums ol li').last().after(albumInfo);
}
else{
$('#your_albums ol').html(albumInfo);
}
}
else{
alert('No more than 5 please');
}
});
$('#clear_albums').click(function(e){
e.preventDefault;
$('#your_albums ol li').remove();
});
$('#save_albums').click(function(){
for(var i = 1; i <= 5; i++){
html = $('#your_albums ol li').eq(i).html();
alert(html);
}
});
});
}
else{
$('#results').text('Query must be more than 3 characters');
}
});
});
答
基本上代码你在做什么:KEYUP火灾,加载结果并附加每次额外的.click处理程序到$('#save_albums'),这是不好的。 (jQuery可以将多个函数绑定到一个事件,所以如果你调用$('something')。click(function(){alert('x');}); 3次,你会得到3个警报)
depends根据您的确切用法,您可以调用$('#save_albums')。unbind('click');
// Unbind existing
$('#save_albums').unbind('click');
$('#save_albums').click(function(){
for(var i = 1; i <= 5; i++){
html = $('#your_albums ol li').eq(i).html();
alert(html);
}
});
或者,你可以尝试重组的源代码有单击处理只有一次附:你添加,然后删除所有点击处理。