正如标题所描述的那样,我在选择框上遇到问题并在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。这总是会返回它应该返回的内容。此外,内容实际上被添加到其适当的容器中,只是它没有显示在页面上。
答案 0 :(得分:0)
好的,所以我通过在showTemplate()函数的最后一位添加hide()和show()来解决这个问题。所以它看起来像这样:
$thisPage.find('.place-where-options-get-populated').hide().html(theItems).show();
基本上,问题就在于html()函数。
可能不是理想的解决方案,但它会完成这项工作。