点击后Jquery延迟,允许不同的选择

时间:2016-07-22 02:13:27

标签: javascript jquery

我添加了一段代码,其中包含我希望在评论中实现的内容。

有9个按钮,我需要点击一个按钮的data-id值,但用户可能会点击一个按钮,然后快速决定要点击其他按钮,所以我想要最后一个按钮的值他们点击按钮。

$( '#add-shot a.btn' ).on( 'click', function(e) {
    e.preventDefault();

    // delay for 1500
    // if no other button is clicked, then simply use $( this ).data('id');
    // else, 
    // if other button is clicked, don't use original data-id but use the new data-id

    var id = $( this ).data('id');
    // run the rest of the code

});

1 个答案:

答案 0 :(得分:4)

您可以使用setTimeout()的全局计时器。在每次单击时只需清除超时,如果在1.5秒内没有单击它们,则将调用匿名函数并获取相应的id



var timer;

$( 'button' ).on( 'click', function(e) {
    e.preventDefault();
    var self = this;
    clearTimeout(timer);                // Reset the timer.
    timer = setTimeout(function(){      // Call this function if the timer 
    	var id = $( self ).data('id');  // did not reset within 1.5 seconds.
        alert(id);
    }, 1500);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button data-id="foo">
 foo
</button>
<button data-id="bar">
 bar
</button>
<button data-id="biz">
 biz
</button>
&#13;
&#13;
&#13;