2012-08-08 73 views
0

我試圖讓一個jQuery甚至只觸發一次該事件,但如果用戶點擊另一個元素,然後回到同一個它會再次觸發。jQuery一次每個相同的事件點​​擊

例如:

$('.summary').on("touchstart mousedown", function(event) { 
    var data_summary = $(this).attr('data-summary'); 
    $('#info').empty().stop(true, true).fadeOut().html('<p>'+data_summary+'</p>').fadeIn(); 
}); 

我知道一個(),但這將永久禁用它。這段代碼的功能是淡入泡泡,但如果用戶多次點擊它,我不希望它繼續這樣做。但是,如果用戶點擊另一個元素,它會淡入一個新元素,從而使前一個元素再次有效,如果點擊。

更新:

的淡入和淡出也被關閉,在這裏是從下方調整是否有人需要它的答案最終的工作代碼。

var prev = null; 
$('.summary').on("touchstart mousedown", function(event) { 
    if(this !== prev) { 
     prev = this; 
     var data_summary = $(this).attr('data-summary'); 
     $('#info').stop(true, true).fadeOut('fast', function() { 
      $(this).html('<p>'+data_summary+'</p>').fadeIn(); 
     }); 
    } 
}); 

回答

3

只要保持先前點擊的元素的軌跡:

var prev = null; 
$('.summary').on("touchstart mousedown", function(event) { 
    if(this !== prev) { 
     prev = this; 
     var data_summary = $(this).attr('data-summary'); 
     $('#info').empty().stop(true, true).fadeOut().html('<p>'+data_summary+'</p>').fadeIn(); 
    } 
}); 

有多種方法可以做到這一點。另一種方法是將元素添加(並刪除)到元素中(如果需要,您也可以使用該元素進行樣式化)。

+0

謝謝!這正是我想要的,並且正在玩弄,但我的代碼已關閉。 – 2012-08-08 01:46:07

相關問題