我正在使用Jquery Mobile,並且我的觸摸事件被觸發兩次。起初我認爲它可能是鼠標事件和觸摸事件之間的重疊,但我試圖在平板電腦/智能手機上解除鼠標事件,並且事件仍然被觸發兩次。不知道爲什麼觸發事件觸發兩次
這裏是我的代碼
//Tablet Features
var eventType = {
swipeleft: '-=100',
swiperight: '+=100'
}
$('#navMenu').bind('swipeleft swiperight',
function(e) {
$('#prbBtnHolder').animate({left:eventType[e.type]});
//alert(e.type);
}
);
//Device Detection
(function() {
var agent = navigator.userAgent.toLowerCase();
var isDevice = agent.match(/android/i);
if (isDevice == 'android') {
//alert(isDevice);
$('*').unbind('mousedown').unbind('mouseout').unbind('mousemove').unbind('mouseup');
}
})();
我一直在試圖弄清楚這一點了一段時間,如果你有任何想法,請幫助。
UPDATE
我設法通過將觸摸處理程序.ready()
方法外局部解決這個問題。但是,當我在服務器上運行頁面時,雙觸發器再次發生。現在我完全難倒了。爲什麼兩個相同的頁面(字面上相同)在本地和服務器上的行爲不同?
如果在正則表達式中使用'i'標誌,則不需要使用'toLowerCase()',因爲'i'標誌意味着正則表達式將搜索不區分大小寫。 – Jasper 2012-01-27 01:11:18
哪些觸摸事件被觸發兩次?你發佈的代碼中唯一觸摸事件是'swipeleft' /'swiperight'事件處理程序,你是指那些?我在這裏測試了代碼:http://jsfiddle.net/B8PQn/1/在我的手機(Android 2.3)上,滑動事件按預期工作。 – Jasper 2012-01-27 01:12:38
@ Jasper - 這只是代碼的一個例子。頁面上的每個事件都被觸發兩次,我不知道爲什麼。也許有一些與jQuery的移動重疊? – dopatraman 2012-01-27 01:16:00