Jquery仅在单击时检测事件

Jquery仅在单击时检测事件,jquery,events,Jquery,Events,我想在表单上发生jQuery事件后仅在单击事件后添加一些代码。当发生其他事件时,也会调用该事件 如果我使用此代码,它会检测正在调用的事件: $( ".grouped_form" ).on("wc_variation_form", function() { alert("triggered"); }); 我能想到的最好的解决方案是这个,但它不起作用: $( ".grouped_form" ).on("click", function() { $

我想在表单上发生jQuery事件后仅在单击事件后添加一些代码。当发生其他事件时,也会调用该事件

如果我使用此代码,它会检测正在调用的事件:

      $( ".grouped_form" ).on("wc_variation_form", function() {
        alert("triggered");
      });
我能想到的最好的解决方案是这个,但它不起作用:

$( ".grouped_form" ).on("click", function() {
      $(this).on("wc_variation_form", function() {
        alert("triggered");
      });
    });
是否有办法检测此事件何时仅由单击事件触发?

$('.click')。单击(函数(){
$(this.addClass('clicked');
})
$('.trigger')。单击(函数(){
if($('.click').hasClass('clicked')){
//你的密码
console.log('triggered');
}
})

在触发前单击该按钮。否则你就不能得到结果。
点击
单击此按钮可触发事件

触发器
尝试下一次修改,并告诉我是否在预期条件下工作:

$(".grouped_form").on("click", function() {
    $(this).one("wc_variation_form", function() {
        alert("triggered");
    });
});

单击事件发生后,它将只注册事件“wc\u variaton\u form”的侦听器一次。

我最终解决了这个问题,但答案帮助我意识到了问题所在。单击事件发生后,页面的某些部分会刷新,并且单击事件不会链接到其他事件。解决方案是在click事件上存储一个变量,然后在下一个事件发生时重置它

var clicked = localStorage['clicked'];

    $( ".grouped_form" ).on("click", function() {
      localStorage['clicked'] = "true";
  });

      $(".grouped_form").on("wc_variation_form", function() {
        if (clicked == "true") {
          localStorage['clicked'] = "false";
          alert("triggered");
      }
    });

什么是
wc\u variation\u form
事件?它是序列中的最后一个事件。我之所以要这样做,是因为我对html做了一些更改,通过单击按钮可以触发整个事件序列。一切都按预期工作,但它会更改某些元素的可见性。我想我应该在所有被触发的事件结束时修复html。我的意思是我从来没有听说过一个叫做
wc\u variation\u form
的事件。这是您的应用程序的自定义事件吗?是的,它来自woocommerce。这是它触发`t.trigger(“wc_variation_form”)的代码,a.loading=!1 }, 100) };'谢谢,我尝试了这个,但是我认为元素会被刷新,因为“clicked”类已被删除,因此不会触发。您确定事件“wc_variation_form”在目标上被触发。在同一目标上发生单击事件后,从“grouped_from”中触发吗?你能尝试下一件事吗:1)当你的代码开始时启动一个计时器:
console.time(“test”)
,2)将下一个侦听器添加到目标
$(“.grouped\u form”)。在(“click wc\u variation\u fom”,function(){console.timeLog(“test”)})上检查开发人员控制台的时间和事件顺序。是的,我确定-当我使用第一个代码块并单击按钮时,它在序列的末尾触发。步骤2出错-TypeError:console.timeLog不是一个函数。确定,然后为此替换1)开始2个计时器:console.time(“test1”);控制台时间(“测试2”);2) $(“.grouped_form”)。打开(“单击”,函数(){console.timeEnd(“test1”)})$(.grouped_form”).on(“wc_变体_form”,function(){console.timeEnd(“test2”)});3) 是同一张支票。谢谢你的帮助,我找到了解决办法。我把它贴出来作为答复。