我正在绑定一个手风琴标签,以便在点击和焦点时打开。但每当我点击它时,它会执行两次该功能。我该如何阻止这种行为? 我只希望它执行一个事件。点击或焦点。
$("h2.radioBoxInActive").bind('click focus', function () {
input = $(this).prev("span, input");
$(".selected", app.element).removeClass("selected").slideUp();
$(".radioBoxActive", app.element).removeClass("radioBoxActive");
$("#" + input.attr("data-panel")).slideDown().addClass("selected");
$(this).addClass("radioBoxActive");
});
答案 0 :(得分:1)
避免双重执行只绑定focus
事件。即使用户使用其他输入设备选择复选框(例如通过键盘)
答案 1 :(得分:1)
您可以保存上次执行的时间戳,以阻止该功能实际上同时执行。
这只允许函数在上次执行超过50毫秒之前执行。
(function(){
var lastExecuted = 0;
$("h2.radioBoxInActive").bind('click focus', function () {
var currentTime = new Date().getTime();
var timeDelta = currentTime - lastExecuted;
if (timeDelta > 50) {
lastExecuted = currentTime;
input = $(this).prev("span, input");
$(".selected", app.element).removeClass("selected").slideUp();
$(".radioBoxActive", app.element).removeClass("radioBoxActive");
$("#" + input.attr("data-panel")).slideDown().addClass("selected");
$(this).addClass("radioBoxActive");
}
});
})();