Javascript 在失败时捕获和触发同一事件

Javascript 在失败时捕获和触发同一事件,javascript,jquery,functional-programming,Javascript,Jquery,Functional Programming,我想捕获一个事件并有条件地触发它 $('#next, #prev, .qpn').click( function(event){ if (status[0]){ submit_quiz($(currQ), 0); } else{ setTimeout(function(){$( "body" ).trigger( event );}, 5000); } }); 我正在触发,但没有被触发。我是否需要指定实际调用事件的元素,如下所示:

我想捕获一个事件并有条件地触发它

$('#next, #prev, .qpn').click( function(event){
    if (status[0]){
      submit_quiz($(currQ), 0);  
    }  
    else{
      setTimeout(function(){$( "body" ).trigger( event );}, 5000);
    }
});
我正在触发,但没有被触发。我是否需要指定实际调用事件的元素,如下所示:

$('#next').trigger("click")
$('#next, #prev, .qpn').click( function(event){
    var that=$(this);
    ...
that.trigger('click');
$('#next, #prev, .qpn').click( function(event){
    var that=$(this);
    if (status[0]){
      submit_quiz($(currQ), 0);  
    }  
    else{
      setTimeout(function(){that.trigger( 'click' );}, 5000);
    }
});

如何获取最初调用事件的元素(在我的例子中是
$('next')
$('prev')
$('.qpn')
)?

可以获得如下元素:

$('#next').trigger("click")
$('#next, #prev, .qpn').click( function(event){
    var that=$(this);
    ...
that.trigger('click');
$('#next, #prev, .qpn').click( function(event){
    var that=$(this);
    if (status[0]){
      submit_quiz($(currQ), 0);  
    }  
    else{
      setTimeout(function(){that.trigger( 'click' );}, 5000);
    }
});
然后像这样触发它:

$('#next').trigger("click")
$('#next, #prev, .qpn').click( function(event){
    var that=$(this);
    ...
that.trigger('click');
$('#next, #prev, .qpn').click( function(event){
    var that=$(this);
    if (status[0]){
      submit_quiz($(currQ), 0);  
    }  
    else{
      setTimeout(function(){that.trigger( 'click' );}, 5000);
    }
});
因此,您的代码应该如下所示:

$('#next').trigger("click")
$('#next, #prev, .qpn').click( function(event){
    var that=$(this);
    ...
that.trigger('click');
$('#next, #prev, .qpn').click( function(event){
    var that=$(this);
    if (status[0]){
      submit_quiz($(currQ), 0);  
    }  
    else{
      setTimeout(function(){that.trigger( 'click' );}, 5000);
    }
});