2013-02-13 68 views
0

所以我有一段代碼,當用戶用鼠標左右滑動或觸摸移動時記錄日誌。jQuery的鼠標懸停區域獲取元素

我需要做的是停止對這個區域內的一些元素。因此,例如,該代碼將記錄任何揮筆在我mainContainer上

var maxTime = 1000, 
// allow movement if < 1000 ms (1 sec) 
maxDistance = 50, 
// swipe movement of 50 pixels triggers the swipe 
target = jQuery('#mainContainer'), 
startX = 0, 
startTime = 0, 
touch = "ontouchend" in document, 
startEvent = (touch) ? 'touchstart' : 'mousedown', 
moveEvent = (touch) ? 'touchmove' : 'mousemove', 
endEvent = (touch) ? 'touchend' : 'mouseup'; 

target.bind(startEvent, function(e) { 
    // prevent image drag (Firefox) 
    // e.preventDefault(); 
    startTime = e.timeStamp; 
    startX = e.originalEvent.touches ? e.originalEvent.touches[0].pageX : e.pageX; 
}).bind(endEvent, function(e) { 
    startTime = 0; 
    startX = 0; 
}).bind(moveEvent, function(e) { 
    // e.preventDefault(); 
    var currentX = e.originalEvent.touches ? e.originalEvent.touches[0].pageX : e.pageX, 
     currentDistance = (startX === 0) ? 0 : Math.abs(currentX - startX), 
     // allow if movement < 1 sec 
     currentTime = e.timeStamp; 
    if (startTime !== 0 && currentTime - startTime < maxTime && currentDistance > maxDistance) { 

     console.log(startEvent); 
     if (currentX < startX) { 
      // swipe left code here 
      console.log("swipe left"); 
     } 
     if (currentX > startX) { 
      // swipe right code here 
      console.log("swipe right"); 
     } 
     startTime = 0; 
     startX = 0; 
    } 
}); 

但內mainContainer上我有一個在移動時,我不想要得到的日誌幾個滑塊(觸發條件)。

我所有的滑塊都有類滑塊。

我在想如果有一個if語句來說明鼠標/觸摸開始的位置是否在這個類內事件沒有發生。也許這是錯誤的做法?

如果這是一個好方法 - 我怎麼知道鼠標/觸摸是否在這個區域?

感謝

回答

1

只是檢查event.target有類.slider

target.bind(startEvent, function(e) { 
    if (!$(e.target).is('.slider')) { 
     startTime = e.timeStamp;startX = e.originalEvent.touches ? 
         e.originalEvent.touches[0].pageX : 
         e.pageX; 
    } 
}).bind(... 
+0

我來代替。是.hasClass(),但由於 – Dan 2013-02-13 01:49:43