在 Jquery 中多次停止触发功能 运行
Stop Trigger function to run multiple times in Jquery
出于某种原因,我的触发器函数(即使被调用一次)运行多次触发。
这是代码:-
$('.video-section ul li a').on({ 'touchstart' : function(){
console.log("Touched");
$(".video-section ul li a").trigger("click");
} });
$(".video-section ul li a").click(function(e){
e.preventDefault();
console.log("clicked");
e.stopPropagation();
});
发生的情况是 "click" 函数被 "touch" 函数触发一次时 运行 多次。
无论如何,我可以强制它 运行 一次吗?
谢谢。
click
在您触摸元素后 300 毫秒被触发,无论您是否在 touchstart
上触发它。所以,因为你在 touchstart 上触发它,它会触发两次。你可以这样做:
此处示例:JS Fiddle
$('.video-section ul li a').on('click touchstart', function(e){
e.preventDefault();
if(e.type == "touchstart") {
console.log("touchstart event");
// whatever else on touch event
} else if(e.type == "click") {
console.log("click event");
// whatever else on click event
}
});
您可能需要 $(this).click();
而不是 $('.video-section ul li a').trigger('click');
,因为前者只会触发对触发 touchstart
事件的元素的点击。后者将触发与选择器匹配的每个元素的点击。
出于某种原因,我的触发器函数(即使被调用一次)运行多次触发。
这是代码:-
$('.video-section ul li a').on({ 'touchstart' : function(){
console.log("Touched");
$(".video-section ul li a").trigger("click");
} });
$(".video-section ul li a").click(function(e){
e.preventDefault();
console.log("clicked");
e.stopPropagation();
});
发生的情况是 "click" 函数被 "touch" 函数触发一次时 运行 多次。
无论如何,我可以强制它 运行 一次吗?
谢谢。
click
在您触摸元素后 300 毫秒被触发,无论您是否在 touchstart
上触发它。所以,因为你在 touchstart 上触发它,它会触发两次。你可以这样做:
此处示例:JS Fiddle
$('.video-section ul li a').on('click touchstart', function(e){
e.preventDefault();
if(e.type == "touchstart") {
console.log("touchstart event");
// whatever else on touch event
} else if(e.type == "click") {
console.log("click event");
// whatever else on click event
}
});
您可能需要 $(this).click();
而不是 $('.video-section ul li a').trigger('click');
,因为前者只会触发对触发 touchstart
事件的元素的点击。后者将触发与选择器匹配的每个元素的点击。