2013-02-07 119 views
3

我正在Android上開發一個移動網站,我有一個選擇列表作爲菜單。jQuery .focus()不適用於android

選擇列表位於視圖區域之外,我想通過點擊div切換瀏覽器上的選項。

我已經嘗試了數百萬種方法來打開視圖來選擇一個值,但沒有一個是成功的......經過一些研究,我在stackoverflow上讀到了在Android設備上禁用.focus()函數。

我知道這個代碼適用於iOS:

$(document).ready(function(){ 
    $("#navigation").click(function(){ 
     $("#mobileMenu").focus(); 
    }); 
}); 

與下面的HTML:

<select id="mobileMenu"> 
    <option value="link1" onclick='openMobileMenuLink' >link one</option> 
    <option value="link2" onclick='openMobileMenuLink' >link two</option> 
    <option value="link3" onclick='openMobileMenuLink' >link three</option> 
</select> 

有什麼辦法,我可以打開Android設備上的選項觀點(我在測試鉻)而不破壞代碼(在IOS上工作正常)。

回答

4

我終於找到了一個解決方案:

上一個div挖掘時,與JS生成的點擊事件。

<div onclick="generateSelectDropDown()"> 

以下功能上面的div電話:

window.generateSelectDropDown = function() { 
    var dropdown = document.getElementById('mobileMenu'); 
    showDropdown(dropdown); 
}; 

showDropdown = function (element) { 
    var event; 
    event = document.createEvent('MouseEvents'); 
    event.initMouseEvent('mousedown', true, true, window); 
    element.dispatchEvent(event); 
}; 
+0

+1:嗯......這是真棒!謝啦! –

+0

這個解決方案對我來說很有效,但也有人棄用它。我使用'element.dispatchEvent(new MouseEvent('mousedown'));'而不是使用不推薦的'initMouseEvent'方法來實現相同的結果。 – orca

-1

不知道這是否會仍然在iOS的工作,但它應該...

$(document).ready(function(){ 
    $("#navigation").click(function(){ 
     $("#mobileMenu").click(); 
    }); 
}); 
+0

的Click事件不會做的伎倆要麼... –