मुझे वही आवश्यकता थी और टचवाइप प्लगइन को वाइप लेफ्ट, वाइपराइट, वाइपअप और वाइपडाउन कॉलबैक पर पास करने के लिए बढ़ा दिया गया था। इससे मुझे कॉन्फ़िगरेशन में preventDefaultEvents: false
सेट करने की अनुमति मिलती है और फिर यदि आवश्यक हो तो मेरे विशिष्ट कॉलबैक में, पहली चीज़ करें: e.preventDefault();
।
मैंने प्लगइन लेखक में संशोधन भेजे। इतना
(function($) {
$.fn.touchwipe = function(settings) {
var config = {
min_move_x: 20,
min_move_y: 20,
wipeLeft: function(e) { },
wipeRight: function(e) { },
wipeUp: function(e) { },
wipeDown: function(e) { },
preventDefaultEvents: true
};
if (settings) $.extend(config, settings);
this.each(function() {
var startX;
var startY;
var isMoving = false;
function cancelTouch() {
this.removeEventListener('touchmove', onTouchMove);
startX = null;
isMoving = false;
}
function onTouchMove(e) {
if(config.preventDefaultEvents) {
e.preventDefault();
}
if(isMoving) {
var x = e.touches[0].pageX;
var y = e.touches[0].pageY;
var dx = startX - x;
var dy = startY - y;
if(Math.abs(dx) >= config.min_move_x) {
cancelTouch();
if(dx > 0) {
config.wipeLeft(e);
}
else {
config.wipeRight(e);
}
}
else if(Math.abs(dy) >= config.min_move_y) {
cancelTouch();
if(dy > 0) {
config.wipeDown(e);
}
else {
config.wipeUp(e);
}
}
}
}
function onTouchStart(e)
{
if (e.touches.length == 1) {
startX = e.touches[0].pageX;
startY = e.touches[0].pageY;
isMoving = true;
this.addEventListener('touchmove', onTouchMove, false);
}
}
if ('ontouchstart' in document.documentElement) {
this.addEventListener('touchstart', onTouchStart, false);
}
});
return this;
};
})(jQuery);
स्रोत
2012-04-14 07:10:04
एकदम सही है यही कारण है, धन्यवाद:
संशोधित प्लगइन! – felixthehat
मैंने कोशिश की है लेकिन बाएं/दाएं खींचते समय, स्क्रीन अभी भी डूबती है, e.preventDefault() पूरी तरह से काम नहीं कर रहा है या इसे बहुत देर हो चुकी है या कुछ कहा जाता है। मैंने सिम्युलेटर पर परीक्षण किया ... क्या यह एक वास्तविक फोन पर अलग है? – Huangism
हुआंगवाद: वाइप कार्यों को एआरआर के रूप में घटना लेने की आवश्यकता होती है, जैसे 'wipeLeft: function (e) {...} 'फिर' e.preventDafult();' पहली चीज़ के रूप में कॉल करें। –