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?