2014-03-13 20 views
0

我有两个分离文件中的处理程序。如果第一个处理程序已经执行,我想在第二个处理程序中进行测试。例如:jquery控制事件处理程序执行

如果文件之一:

$("#input1").on("focusout", function(){ 
    alert("Hi");   
}); 

如果文件中的两个

$("#btn1").on("click", function(){ 
    if(input1 focusout handler is not running) { 
     alert("clicking"); 
    } 
}); 

有人能帮助我吗?

+0

你应该解释一下你的问题,而不是! “在第二个处理程序中测试,如果第一个处理程序已经执行”与以下内容不同:“input1 focusout处理程序未运行” –

+0

我已经可以告诉您'input1 focusout处理程序未运行'。在JavaScript中,事件处理程序是按顺序*执行的,除非你从另一个代码中调用一个,但这不是你的情况。 –

回答

0

我可以提供这样做有两种方式:

  1. 全局变量

    // Somewhere in JS code 
    focus_handler = false; 
    
    $("#input1").on("focusout", function(){ 
        focus_handler = true 
        alert("Hi"); 
        // some code 
        focus_handler = false 
    } 
    
    
    $("#btn1").on("click", function(){ 
        if(!focus_handler) { // or focus_handler === false 
         alert("clicking"); 
        } 
    }); 
    
  2. JQuery的数据

    $("#input1").on("focusout", function(){ 
        $("#btn1").data('focus_handler', true); 
        alert("Hi"); 
        // Some handler 
        $("#btn1").data('focus_handler', false); 
    } 
    
    $("#btn1").on("click", function(){ 
        if(typeof($(this).data('focus_handler')) != 'undefined') { 
         alert("clicking"); 
        } 
    });