2017-02-12 55 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'); 
     }); 


    }); 
} 
});