Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery事件函数触发一次,尽管有多次附加_Javascript_Jquery - Fatal编程技术网

Javascript Jquery事件函数触发一次,尽管有多次附加

Javascript Jquery事件函数触发一次,尽管有多次附加,javascript,jquery,Javascript,Jquery,我该怎么做 html 请帮助我…仅绑定处理程序一次: var popupmenuBound = false; $("#onclickpopupmenu").bind("click",function(){ alert("this can execute multiple times"); if (!popupmenuBound) { $("#popupmenuok").bind("click",function(){ alert("this has to be tr

我该怎么做

html


请帮助我…

仅绑定处理程序一次:

var popupmenuBound = false;

$("#onclickpopupmenu").bind("click",function(){
  alert("this can execute multiple times");
  if (!popupmenuBound) {
    $("#popupmenuok").bind("click",function(){
      alert("this has to be triggered only once eventhough the parent event trigger multiple times");
    });
    popupmenuBound = true;
  }
});

仅绑定处理程序一次:

var popupmenuBound = false;

$("#onclickpopupmenu").bind("click",function(){
  alert("this can execute multiple times");
  if (!popupmenuBound) {
    $("#popupmenuok").bind("click",function(){
      alert("this has to be triggered only once eventhough the parent event trigger multiple times");
    });
    popupmenuBound = true;
  }
});

有几种可能解释你想要什么的方法

第一个是对第一个按钮的多次单击,这会在第二个按钮上产生一个单一但持久的(它会对每次单击作出反应)事件处理程序。要做到这一点,您可以这样做:

$('#onclickpopupmenu').click(function() {
    // alert
    $('#popupmenuok').off('click').on('click', function() {
        // alert
    });
});

第二个是多次单击第一个按钮,每次单击第二个按钮都会得到一个一次性事件处理程序。因此,如果您单击第一个按钮一次,然后单击第二个按钮,您将收到警报,但再次单击第二个按钮不会产生任何效果。为此:

$('#onclickpopupmenu').click(function() {
    // alert
    $('#popupmenuok').off('click').one('click', function() {
        // alert
    });
});

有几种方法可以潜在地解释您想要的内容

第一个是对第一个按钮的多次单击,这会在第二个按钮上产生一个单一但持久的(它会对每次单击作出反应)事件处理程序。要做到这一点,您可以这样做:

$('#onclickpopupmenu').click(function() {
    // alert
    $('#popupmenuok').off('click').on('click', function() {
        // alert
    });
});

第二个是多次单击第一个按钮,每次单击第二个按钮都会得到一个一次性事件处理程序。因此,如果您单击第一个按钮一次,然后单击第二个按钮,您将收到警报,但再次单击第二个按钮不会产生任何效果。为此:

$('#onclickpopupmenu').click(function() {
    // alert
    $('#popupmenuok').off('click').one('click', function() {
        // alert
    });
});

我觉得可以检查控制台,除了
popupmenuok
popmenuok
中存在拼写错误外,问题是我的内部事件触发的时间与外部事件触发的时间一样多。您希望它触发的次数与父事件相同,还是只需触发一次内部事件仅触发一次。我觉得可以检查控制台,除非
popupmenuok
popmenuok
中存在拼写错误。问题是我的内部事件触发的时间与外部事件触发的时间相同。是否希望它触发的次数与父事件相同,或者该事件只应触发一次内部事件只能触发一次。