2016-11-04 52 views
0

我正在使用AngularJS圖像查看器應用程序,如果您處於圖像編輯模式,您還可以在圖像上繪製(「註釋」)。點擊作爲編輯按鈕的鉛筆圖標進入編輯模式。點擊另一個按鈕即關閉編輯按鈕,即可關閉編輯模式。touchmove上的jQuery綁定功能不工作?

現在註釋有一個錯誤,因爲編輯模式下的繪圖操作會干擾滾動事件,並且當您嘗試繪製某些內容時,視圖將開始滾動。因此,要解決這個問題,我禁用的滾動而在編輯模式下,像這樣:

$('body').on("touchmove", function(e){e.preventDefault()}); 

而且我會啓用滾動背面的密切編輯按鈕被點擊了這樣的時候:

$('body').off("touchmove"); 

這工作得很好,除了某些情況下,視圖開始滾動,當我嘗試繪製某些東西而沒有調用關閉功能!這些情況是隨機發生的,並且不可靠地重現,但是當我坐着它5分鐘時,塗鴉離開,無端滾動時有發生。

我實際上是通過在off方法的所有事件上放置斷點來測試這一點 - 斷點沒有命中,但屏幕開始滾動。

開/關方法車?是否有時間限制?幫幫我!

回答

0

.on()將事件處理程序附加到元素。

.off()從元素中刪除「之前附加的」事件處理程序。

因此,如果你定義 「處理」 是這樣的:

function preventTouch(e){ 
    e.preventDefault(); 
} 

然後調用它:

$('body').on("touchmove", preventTouch(e)); 

然後關閉:

$('body').off("touchmove", preventTouch(e)); 

它應該工作..
試試吧!


你或許應該還可以防止這些事件: 「touchstart」 和 「touchend」,例如:

在:

$('body').on("touchmove touchstart touchend", preventTouch(e)); 

關:

$('body').off("touchmove touchstart touchend", preventTouch(e));