在iOS上,jQuery select change会每隔一段时间触发一次

时间:2017-09-05 10:03:58

标签: jquery ios select safari onchange

正如标题所描述的那样,我在选择框上遇到问题并在iOS Safari上触发了更改事件。 我有以下代码:

$thisPage.find('select#id-attribute').on('change', function (e) {
    var theId = $(this).val();

    $thisPage.find('.place-where-options-get-populated').empty();

    if (theId != '') {
        $.ajax({'type': 'GET', 'url': '/the-actual-url'+ theId, 'dataType': 'json'})
            .done(showTemplate)
            .fail(function(jqXHR, textStatus, errorThrown) {

            })
    } else {
        showTemplate({});
    }

}).trigger('change');

以上代码在桌面浏览器上运行正常 - 输出选项会在每次更改事件时相应更改 - 而在iOS上,选项每隔一次更改一次(第一次更改时工作,第二次更改不工作,适用于3,不在4号等等。 我正在使用 jQuery v3.2.1

正确指导方向将受到高度赞赏。

修改: showTemplate()函数基本上是我对服务器所做的请求,它以下结尾(与我的问题有关的部分):

$thisPage.find('.place-where-options-get-populated').html(theItems);

现在,如果在' theItems'上做一个console.log。这总是会返回它应该返回的内容。此外,内容实际上被添加到其适当的容器中,只是它没有显示在页面上。

1 个答案:

答案 0 :(得分:0)

好的,所以我通过在showTemplate()函数的最后一位添加hide()和show()来解决这个问题。所以它看起来像这样:

$thisPage.find('.place-where-options-get-populated').hide().html(theItems).show();

基本上,问题就在于html()函数。

可能不是理想的解决方案,但它会完成这项工作。