2010-03-29 79 views
0

我完全不知道爲什麼會發生這種情況,但下面的代碼似乎在所有瀏覽器中執行了大量的時間。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'); 
     } 
    }); 
}); 

回答

4

基本上代碼你在做什麼: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); 
       } 
      }); 

或者,你可以嘗試重組的源代碼有單擊處理只有一次附:你添加,然後刪除所有點擊處理。