如果自上次点击元素以来仅过了500毫秒,我怎样才能运行.on()函数内的所有内容?我正在尝试使这项工作,以便你不能快速点击元素。我希望点击仅在最后一次点击后已经过500ms时才会注册。
$(document).on('click', 'a.next, a.prev, nav ul a', function(e){
e.preventDefault();
//Set side nav item to be active
var page = $(this).data("page");
var sectionClicked = $(this).data("section");
var currentSection = $("body").attr("data-current-section");
var currentPage = $("body").attr("data-current-page");
if($(this).hasClass("side_nav_link")){
var section = $(this).data("section");
ga('send', 'event', {
'eventCategory': 'Side Nav',
'eventAction': 'Click',
'eventLabel': section
});
}
if($(this).hasClass("next") ){
ga('send', 'event', {
'eventCategory': 'Prev/Next Links',
'eventAction': 'Click',
'eventLabel': 'Next'
});
}
if($(this).hasClass("prev") ){
ga('send', 'event', {
'eventCategory': 'Prev/Next Links',
'eventAction': 'Click',
'eventLabel': 'Prev'
});
}
loadContent(page, sectionClicked, currentSection, currentPage);
});
答案 0 :(得分:0)
将this
的值添加到另一个变量并创建一个setTimeout。
$(document).on('click', 'a.next, a.prev, nav ul a', function(e){
// prevent defaults
e.preventDefault();
// add this to new variable
var parentThis = this;
// set the timeout function
setTimeout(function(){
//Set side nav item to be active
var page = $(parentThis).data("page"),
sectionClicked = $(parentThis).data("section"),
currentSection = $("body").attr("data-current-section"),
currentPage = $("body").attr("data-current-page");
if($(parentThis).hasClass("side_nav_link")){
var section = $(parentThis).data("section");
ga('send', 'event', {
'eventCategory': 'Side Nav',
'eventAction': 'Click',
'eventLabel': section
});
}
if($(parentThis).hasClass("next") ){
ga('send', 'event', {
'eventCategory': 'Prev/Next Links',
'eventAction': 'Click',
'eventLabel': 'Next'
});
}
if($(parentThis).hasClass("prev") ){
ga('send', 'event', {
'eventCategory': 'Prev/Next Links',
'eventAction': 'Click',
'eventLabel': 'Prev'
});
}
loadContent(page, sectionClicked, currentSection, currentPage);
}, 500);
});
答案 1 :(得分:0)
您可以通过interface{}
并制作[map[options:[a b c]] map[startDialogs:[dialog1]]]
变量来执行此操作。
setTimeout
如果没有切换点击(例如,等待500毫秒),它将执行该操作,然后将计时器设置为500毫秒,然后允许它再次执行此操作。
答案 2 :(得分:0)
var clickInProgress = false;
$(document).on('click', 'a.next, a.prev, nav ul a', function(e){
if(clickInProgress) return;
clickInProgress = true;
//..
setTimeout(function() { clickInProgress = false; }, 500);
});
这有点骇人听闻,但能胜任。
答案 3 :(得分:0)
您可以设置条件,如果设置boolean variable为true,则可以执行click事件。一旦用户点击它,它就会被计时器变为假,在amount
时间之后它将变为true
并且点击事件将再次出现。
var bool = true;
$(document).on('click', '.box', function(e) {
e.preventDefault();
//your code
if (bool) {
console.log('clicked&passed');
bool = false;
setTimeout(function() {
bool = true;
}, 500);
}
});
.box {
height: 50px;
width: 50px;
background: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='box'></div>