safari - DOM 中不再有 <select> 元素的 iOS 10 Safari 问题

标签 safari ios10

使用此链接,您可以重现该错误。

https://jsfiddle.net/pw7e2j3q/

<script>
$( "#test" ).change(function() {
  $("#test").remove();
  var combo = $("<select></select>").attr("id", "test2").attr("name", "test");
  combo.append("<option>New One</option>");
  $("#App").append(combo);
});

$("#click").click(function(){
  $("#App").remove();
})
</script>

如果您点击 <select>元素并将其从 dom 中删除,然后单击链接测试。你应该看到旧的 <select>元素弹出供选择。

有什么办法可以解决这个问题吗?

最佳答案

我能够重现这个问题。问题是,每当您尝试在其更改事件中删除选择框时,iOS10 都无法正确取消绑定(bind)选择框。要解决此问题,您需要将代码更改事件代码放在具有一些超时值的 setTimeout 中。它不适用于零超时值。

http://jsfiddle.net/n62e07ef/

以下是您的代码的修复:

<script>
$( "#test" ).change(function() {
  setTimeout( function() {
    $("#test").remove();
    var combo = $("<select></select>").attr("id", "test2").attr("name", "test");
    combo.append("<option>New One</option>");
    $("#App").append(combo);
  }, 50);
});

$("#click").click(function(){
  $("#App").remove();
})
</script>

关于safari - DOM 中不再有 <select> 元素的 iOS 10 Safari 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39557023/

相关文章:

iphone - 智能应用程序横幅不适用于 iOS

html - 过渡适用于 Chrome 和 Firefox,不适用于 Safari

ios - 如何在 objective-c 中的app purchase ios 10中实现

ios - 如何在iOS 10中删除贴纸包

html - 滚动时在 iOS Safari 上出现奇怪的阻塞

html - 删除空白 (CSS) - Chrome 和 Safari OK - Firefox NOT

swift - iOS Swift 无法识别运行时错误

ios - Swift iOS 10 的推送通知

javascript - window.outerWidth 在 iOS 10 beta 上的 Safari 中为 0

javascript - jQuery .click() 适用于除 Safari 以外的所有浏览器