2017-02-12 64 views
0

我想在聚焦触发后仅执行一次mouseleave。怎么样? 我尝试了几个选项,如off,preventDefault,stopPropagation,返回false;但没有人工作。如何仅运行一次子事件

预先感谢您。

addEvent(date, 'focus', function() { 
    console.log("focuz" + this.innerHTML); 
    document.designMode = 'on'; 

    addEvent(swap_date, 'mouseleave', function (e) { 
     console.log("mouseleave" + this.innerHTML); 
     //document.designMode = 'on'; 
     $(this).off(e); 
     e.preventDefault(); 
     e.stopPropagation(); 
     return false; 
    }); 
}); 
+3

你知道[.one()](http://api.jquery.com/one/)吗? –

回答

0

设置一个标志,并在该标志的基本执行函数

试试这个

var isFocussed = false; 
addEvent(date, 'focus', function() { 
    isFocussed = true; 
    console.log("focuz" + this.innerHTML); 
    document.designMode = 'on'; 

    addEvent(swap_date, 'mouseleave', function (e) { 

     console.log("mouseleave" + this.innerHTML); 
     if(isFocussed){ 
     //document.designMode = 'on'; 
     $(this).off(e); 
     e.preventDefault(); 
     e.stopPropagation(); 
     isFocussed = false; 
     return false; 
     } 
    }); 
}); 
}); 
+0

没有工作m8。我只关注一次,但总是我从单元格出去(表格td)...:/ –

+0

张贴有问题的小提琴 –

0

固定在MouseEnter事件来触发与停止VAR检查。 一旦mouseleave发生,停止打开。

addEvent(swap_date, 'mouseenter', function() { 
stop = false; 
}); 

addEvent(swap_date, 'focus', function() { 
document.designMode = 'on'; 

if (this.innerHTML != "") { 
    $(document).ready(function() { 
     $('.swapDate').bind('mouseleave', function (event) { 
      if (!stop && this.innerHTML != "") 
      checkDate(this.innerHTML); 
      stop = true; 
      $('.swapDate').unbind('mouseleave'); 
     }); 


    }); 
} 
});