Javascript 单击(函数()只在第一次单击时执行
我试图执行给定的Javascript 单击(函数()只在第一次单击时执行,javascript,jquery,click,addclass,removeclass,Javascript,Jquery,Click,Addclass,Removeclass,我试图执行给定的。仅在第一次单击时单击(function()),但它总是在单击时执行。 当点击时,它会工作。更多post按钮将类加载添加到。主ul和将更多post显示到。主li之后,在设置超时功能7秒时移除类加载 JS: $(".more-post-button").click(function () { $('.main ul').addClass('loading'); $('.main li').addClass('show-more-post'); setTimeout(
。仅在第一次单击时单击(function()
),但它总是在单击时执行。
当点击
时,它会工作。更多post按钮
将类加载
添加到。主ul
和将更多post
显示到。主li
之后,在设置超时功能7秒时移除类加载
JS:
$(".more-post-button").click(function () {
$('.main ul').addClass('loading');
$('.main li').addClass('show-more-post');
setTimeout(function(){
$('.main ul').removeClass('loading');
},7000);
});
我的问题是如何仅在第一次单击时执行此操作,而不是每次单击时执行此操作。提前感谢。将其保存在变量中:
var clicked = false;
$(".more-post-button").click(function () {
if(!clicked) {
clicked = true;
$('.main ul').addClass('loading');
$('.main li').addClass('show-more-post');
setTimeout(function(){
$('.main ul').removeClass('loading');
},7000);
}
});
在函数中使用“取消绑定”删除所有事件
$(this).unbind();
建议使用jquery1.7.off
$(this).off();
尝试:
它将只处理一次。我将使用jQuery的函数。这将附加一个只触发一次的处理程序
修改的JS
$(".more-post-button").one("click", function () {
$('.main ul').addClass('loading');
$('.main li').addClass('show-more-post');
setTimeout(function(){
$('.main ul').removeClass('loading');
},1000);
});
为什么要让事情复杂化呢,试试简单的解决方法。你也不会污染globale的名称空间! 演示开始了
实际上,您可以在
addEventListener
中发送一个选项{one:true}
,告诉它只启动一次。因此,加上javascript并仅使用javascript,它将是:
var button = document.getElementsByTagName('button')[0];
var handler = function () { alert('once click'); };
button.addEventListener("click", handler, {once: true});
资料来源:
加载将被删除,如果它再次工作?不想。每次单击(函数()
,只想第一次。检查此项“”这不起作用。。单击是一个绑定,因此每次都会发生。您需要在单击函数中添加标志检查,以确保a)仍然保留一个未使用的处理程序连接,b)代码更长,c)实际上更复杂,而不是更少:)只需使用one
,因为这是一个jQuery问题。Javascript都是关于闭包的。是什么让你觉得这很复杂?这个问题也被javascript标记,jQuery只是一个框架。
(function(){
'use-strict';
var button = document.getElementsByTagName('button')[0];
var myHandler = function() {
var click = 0;
return function() {
if(click === 0) {
alert('single click');
}
click++;
}
}();
button.addEventListener('click', myHandler, false);
})();
var button = document.getElementsByTagName('button')[0];
var handler = function () { alert('once click'); };
button.addEventListener("click", handler, {once: true});