簡體   English   中英

如何使用jQuery單擊僅一次附加數據

[英]How to append data only one time after click with jQuery

所以,我有這個小功能:

carousel_controls_buttons.live('click', function(e){
    setTimeout(function(){
       info_board_span.append(info_board_description);
       e.preventDefault();
    }, 450);
});

我想做的是在兩次,三次快速單擊后停止一次附加info_board_description 當我執行此操作時,此數據會追加一次以上,並且內容重復。 我如何才能在450毫秒內停止此操作? 謝謝。

使用布爾值來控制它。

var flag = true;
carousel_controls_buttons.live('click', function(e){
    e.preventDefault();
    if (flag) {
       setTimeout(function(){
           info_board_span.append(info_board_description);
           flag = true;
       }, 450);
       flag = false;
    }
});

您可以使用clearTimeout函數:

var t = '';
carousel_controls_buttons.live('click', function(e){
    clearTimeout(t);
    t = setTimeout(function(){
          info_board_span.append(info_board_description);
          e.preventDefault();
    }, 450);
});

示例: http//jsfiddle.net/xhSvC/

請注意,不建議使用live方法,而應使用on方法。

雖然其他答案應該起作用,但我想向您介紹debouncethrottle的概念。

http://benalman.com/projects/jquery-throttle-debounce-plugin/是您可以用來實現所需功能的一個插件,即確保某個功能每x秒執行一次。

油門與反跳

節流和反跳都會限制函數的執行速度,但是哪種方法適合給定情況?

好吧,簡單地說:盡管限制將函數的執行限制為每延遲毫秒不超過一次,但反跳保證了該函數將只執行一次(給定閾值)。

carousel_controls_buttons.live('click', function(e) {
    $.debounce(450, function() {
       info_board_span.append(info_board_description);
       e.preventDefault();
    });
});

把一個數放在那兒說var count = 0; 命中時遞增,如果count == 1則檢查條件,如果不保留則附加條件

有一個事件可以實現這一目標:

carousel_controls_buttons.one('click', function() {
  setTimeout(function(){
       info_board_span.append(info_board_description);
       e.preventDefault();
    }, 450);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM