我有这条jQuery:
$('#team-members .team-thumb').on('click', function(e){
e.preventDefault();
var member = $(this).data('member');
$('#team-members .team-profiles').slideToggle();
teamSlider.reloadSlider({
startSlide: member,
pager: false,
adaptiveHeight: true
});
$('html,body').animate({
scrollTop: $("#team-profiles").offset().top},
'fast');
$('.bx-viewport').prepend('<div id="slide-me"></div>');
});
我如何使其仅在事件之前添加一次,因此在第二次单击时不会将其添加到DOM:
$('.bx-viewport').prepend('<div id="slide-me"></div>');
最佳答案
使用jQuery的one()
command:
$('#team-members .team-thumb').one('click', function(e){ ... }
说明:将处理程序附加到元素的事件。每个事件类型的每个元素最多只能执行一次处理程序。
除了此内置命令外,您始终可以使用布尔值标志:
var event_handler_enabled = true;
$('#team-members .team-thumb').one('click', function(e){
if ( event_handler_enabled ){
// code for handling click goes here
event_handler_enabled = false; // ensure this code will not be executed again
}
}
我建议第一个选择。没有理由重新发明轮子。如果jQuery具有仅执行一次处理程序的内置方法,请使用它! :)
关于jquery - 单击处理程序触发事件仅一次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19705304/