在 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 事件的元素的点击。后者将触发与选择器匹配的每个元素的点击。