iOS 10 Safari在DOM中不再出现<select>元素

有了这个链接,你可以重现错误。

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都无法正确解除绑定选择框。 为了解决这个问题,你需要把你的代码更改事件代码放在一个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>

一个简单的解决方案是改变代码,所以不要重新生成整个选择元素,而只是选择元素内部。


我今天偶然发现了这个bug。 这就像Gautam在回答中所说的那样,事件在被删除的元素之前不会解除绑定。 我的解决方案,在删除它之前模糊元素。

 $("#test").blur().remove();
链接地址: http://www.djcxy.com/p/93179.html

上一篇: iOS 10 Safari Issue with <select> element no more in DOM

下一篇: How to use WireMock on a Feign client in a Spring Boot application?