首页 > 解决方案 > jQuery.html() 插入输入字段在 IE11 中不起作用

问题描述

我对 jQuery 的 .html 方法有疑问。双击时,我正在使用以下事件在表格行中插入输入字段。在 Google Chrome 和 Firefox 中一切正常 - 但在 Internet Explorer 11 中无法正常工作。

代码如下:

$(document).on('dblclick', '.myTable tbody tr td:not(:first-child)', function () {
  var originContent = this.innerText;
  $(this).html('<input type="text" value="' + originContent + '">')
  $(this).children().focus();
});

我还尝试了以下方式来插入输入字段:

$(this).html($('<input />', {
 type: "text",
 value: originContent
}));

但它不会起作用。IE11 控制台中没有错误 - 它只是不替换 innerHTML。但请注意:如果我尝试用 .html(1234) 或 .html('string') 之类的数字或字符串替换调试会话中的内部 html,它会起作用。

我究竟做错了什么?其他人注意到这样的问题吗?

标签: javascriptjquery

解决方案


我不知道为什么和如何,但显然$(this).children().focus(); 让它崩溃或阻止它在 IE 中显示....

编辑:错误是由于我处理的错误事件而产生的。我的第一个事件是在双击表格行时做出反应 - 在附加 html 输入字段后,我将焦点更改为输入元素。

但是我的第二个事件处理程序应该对输入元素之外的焦点做出反应,但我错过了选择器中的输入。所以每次我点击表格行时,我都会插入输入并同时删除它。为什么它在 Chrome 中起作用仍然很奇怪,猜它只是知道我想要什么¯_(ツ)_/¯


推荐阅读