2013-12-19 33 views
0

我在我的代碼中使用了hammer.js插件進行拖拽事件,它在頁面首次加載時正常工作,但在重新加載相同頁面時不起作用。爲什麼?重新加載網頁時,拖動事件不起作用

(函數(){

$.fn.touchpanzoom = function() { 

var $img = $(this) 
var zoomer = $img.panzoom() 
var hammer = new Hammer($img.get(0), { 
    prevent_default: true 
}) 

applyDragFunction(zoomer, hammer) 

}

功能applyDragFunction(伸縮鏡頭,錘){

var dragTimer = null 
var lastDrag = { 
    x: 0, 
    y: 0 
} 

var currentDrag = { 
    x: 0, 
    y: 0 
} 

function updateDrag() { 
    var x = lastDrag.x - currentDrag.x 
    var y = lastDrag.y - currentDrag.y 
    lastDrag.x = currentDrag.x 
    lastDrag.y = currentDrag.y 
    zoomer.pan(x, y, 0)  
} 

hammer.ondragstart = function(e) { 
    lastDrag.x = 0 
    lastDrag.y = 0  
    dragTimer = setInterval(updateDrag, 20) 
    return false 
} 
hammer.ondrag = function(e) { 
    currentDrag.x = e.distanceX  
    currentDrag.y = e.distanceY 
    return false 
} 

hammer.ondragend = function() { 
    clearInterval(dragTimer) 
    updateDrag() 
    return false 
} 

} } () )

Please visit this site to download the Plugin

+0

請格式化更好。 – Holybreath

回答

0

更改}())})();)這確實看起來很可疑。

已更新。

(function() { 

$.fn.touchpanzoom = function() { 

var $img = $(this) 
var zoomer = $img.panzoom() 
var hammer = new Hammer($img.get(0), { 
    prevent_default: true 
}) <--- add() here 

這是一個合法的代碼片斷嗎?爲什麼不每次都打電話呢?現在,它看起來像你只是添加了一段代碼(它應該在加載時運行一次,而不是在重新加載時運行)。我認爲這是問題。

+0

我的問題是,如果頁面從源加載,頁面可以正常工作,但如果頁面被重新加載(即從緩存加載)則不起作用。 – user3114999

+0

setInterval()有問題嗎? – user3114999

+0

檢查更新,如果可能的話,提供小提琴或類似的:) – Holybreath