我在选择框上有自定义包装器。当我点击它时,我想显示来自android的原生选择。我尝试在隐藏的选择上触发“焦点”,“点击”和“鼠标中心”,但这些选项都不起作用。
答案 0 :(得分:3)
好的,所以我经过多次修补后创造了一个小提琴并且它起作用(原来只是webkit)。如果有人想出更好的解决方案,我们将非常感激。
HTML
<button id="clickme" value="click me!">Click me!</button>
<select id="select">
<option>Default</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
的jQuery
var clickme = jQuery("#clickme"),
select = jQuery("#select");
clickme.on("mousedown", function (e) {
proxyMouseEvent(e, select[0]);
});
clickme.on("click", function (e) {
proxyMouseEvent(e, select[0]);
});
function proxyMouseEvent(event, element) {
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent(event.type, event.bubbles, event.cancelable, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
element.dispatchEvent(evt);
}
基本上,我正在从按钮捕获事件,复制它并将其发送到选择。当select检测到mousedown事件时,它会触发它的默认行为(在桌面操作系统中显示下拉列表,而在移动设备中则显示覆盖列表)