2016-07-07 217 views
1

這適用於桌面瀏覽器,但不適用於我的iOS手機。我試着添加'touchstart',並看着this post's solution來檢查其他人是如何運作的,但它仍然無法正常工作。有關其他選項的建議?我也嘗試添加e.preventDefault() - 並將函數添加到函數()中,但這並不奏效。Javascript不適用於手機,但適用於臺式機

我曾嘗試:

$('body').on('click touchstart', '.myContainer', function() { 
    $(this).toggleClass('myContainer-unselected').toggleClass('myContainer-selected'); 
}); 

編輯: 看來有可能是別的事情上,我改變了代碼,以便儘可能通用和它不發射iOS上的事件,但工作在我的鉻模擬器:

$(document).on('click touchstart', 'body', function() { 
     alert('hi'); 
    }); 

其他更新:

我加入以下代碼到我的script.js文件:

$('body').css('display', 'none'); 

正如預期的那樣,我的桌面瀏覽器對於本地和heroku都是空白的,但是當我在移動設備上進行測試時,屏幕並非空白。它看起來像js不能正常工作。

圖片附:

enter image description hereenter image description here

回答

5

答:這不是在iOS上的Safari工作的原因是因爲在我的js頁我用ES6,特別是「讓'[目前不支持] [1]。更改爲ES5,問題消失。

$('body').on('click', '.dashboard_leftNav_category a', function() { 
     var link = $(this).attr('showSection'); //changed from let link 
     var show = $('[section="'+link+'"]'); 
     $('[section]').hide(); 
     $('body').find(show).fadeIn(); 
     $('html,body').scrollTop(0); 
    }); 
+1

刪除讓我爲我解決問題。 – cmac

1

這會幫助你。而不是將其綁定到body元素,將事件綁定到文檔。

$(document).on('click touchstart', '.myContainer', function() { 

     $(this).toggleClass('myContainer-unselected').toggleClass('myContainer-selected'); 
    }); 

也可以嘗試改變添加以下的風格myContainer中類

cursor : pointer; 
+0

謝謝。我再次檢查,以確保在我的樣式中添加了光標:指針,並將其更改爲文檔。它仍然沒有工作,所以我檢查了我的瀏覽器控制檯,看到它發射了兩個事件。我添加了e.stopImmediatePropagation(),但它仍然發射了兩個事件。我認爲從'點擊touchstart'切換到點擊,現在它只觸發一個事件,但它仍然不適用於移動設備。然後,我嘗試了'touchstart'而沒有'點擊',它也不適用於移動設備。它在我的手機模擬器中使用chrome,但不在我的iphone上。 –

相關問題