jQuery selectmenu更改功能在iPhone上不起作用

jQuery selectmenu change function not working on iPhone

本文关键字:iPhone 不起作用 功能 selectmenu jQuery      更新时间:2023-09-26

我在网页中使用jquery selectmenu功能,但它在ios浏览器上似乎无法正常工作。

在我选择菜单项后,菜单消失了,但我的改变是:功能根本不会启动。它只是再次隐藏菜单。

我的代码如下:

$('#adultMenu').selectmenu({
    change: function() {
        adultval = $(this).val() + ' Adults. ';
        var inputvalue = adultval + childval + youthval + infantval;  
        $('#personInput').val(inputvalue);
    }
});

我认为这在iOS上是一个很常见的问题,但在阅读了很长时间的论坛后,我还没有找到答案。

任何帮助都会很棒!

来自未来的亲爱的人:以下是我迄今为止的发现:
用新结论编辑

经过更多的实验,我找到了原因。当您用菜单中没有的内容设置选择菜单的值时,就会发生这种情况。以下展示了该问题:

var $fubar = $('.fubar');
$fubar.selectmenu({
    'change': function () {
        $fubar.val('Pancakes');
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<link href="https://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css" rel="stylesheet"/>
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script>
<select class="fubar">
    <option>Cake</option>
    <option>Ice Cream</option>
</select>

如果您使用的是FastClick库,这可能是问题所在。根据以下评论,我不得不禁用FastClick进行选择:https://github.com/ftlabs/fastclick/issues/268#issuecomment-65022184。对于selectmenu,我在if中又添加了一个条件:

if (targetElement.nodeName.toLowerCase() == 'select' || targetElement.hasClass('ui-menu-item')) {
    return false;
  }