0

http://jsfiddle.net/mark69_fnd/DyRCZ/

在 Chrome 上:

在此处输入图像描述

在 IE9 上:

在此处输入图像描述

我正在使用 jQuery 1.8.0

现在,我知道 IE9 很烂,但 IE 是 5 大浏览器之一,而 jQuery 应该将开发人员与 IE 的“特性”隔离开来,不是吗?

那么,有什么问题呢?

谢谢。

附言

我知道 IE 主题会邀请进行某种谈话,但请保持建设性。

编辑

对于所有声称字符串数组不起作用的人。jQuery 1.8.0 支持它,否则它既不能在 Chrome 也不能在 Firefox 上工作。但它对他们两个都有效!唯一的问题是 IE9,这意味着 jQuery 1.8.0 after()API 在那里被破坏了。

编辑2

after()我认为 jQuery 1.8.0甚至在 Chrome 上也有更多问题。例如,下面应该工作吗?

$('#itemsHeader').after("         
                        <tr><td>a</td></tr>");​

http://jsfiddle.net/mark69_fnd/Nw8Hz/

那么:

$('#itemsHeader').after("         <tr><td>a</td></tr>");​

答案是前者不起作用,但后者起作用!从 html 的角度来看,两者都是相同的并且应该可以工作。但它甚至不在 Chrome 上。

编辑3

我很蠢。我是。

4

3 回答 3

1

jQuery 文档没有说明支持将 HTML 字符串数组作为输入。

.after( 内容 [, 内容] )

在匹配元素集中的每个元素之后插入的 HTML 字符串、DOM 元素或 jQuery 对象。

内容一个或多个附加 DOM 元素、元素数组、HTML 字符串或 jQuery 对象,以插入到匹配元素集中的每个元素之后。

编辑:好的,再看一遍后,它可以以一种表示 HTML 字符串数组的方式读取,但我认为这不是读取它的方式。在这种情况下,文档是模棱两可的,应该修复。

于 2012-08-23T17:36:04.970 回答
1

.after()API支持 DOM 元素数组,而不是明确的 html 字符串数组只需使用简单的字符串连接:

http://jsfiddle.net/DyRCZ/11/

var i, rows = "";

for (i = 0;i < 4; i += 1){
    rows += '<tr><td colspan="2">This is item ' + i + '</td></tr>';
}
$('#itemsHeader').after(rows);​

jQuery 文档解释参数

附加参数 - 与其他添加内容的方法类似...... .after() 还支持传入多个参数作为输入。支持的输入包括 DOM 元素、jQuery 对象、HTML 字符串和 DOM 元素数组。

正如此处明确指出的,字符串数组不是该方法支持的参数。仅仅因为它在 chrome 中工作,并不意味着它是一个有意和可靠的功能。jQuery 标准化了它在浏览器中的预期行为。未记录的功能可能会以一种或另一种方式出现,具体取决于浏览器的特定 js 实现如何处理案例。

于 2012-08-23T17:44:37.767 回答
0

在 IE9 上 http://jsfiddle.net/DyRCZ/3/

我让它在 IE9 上运行得很好。您正在传递一个数组,而不是文本字符串。尝试将数组加入一个字符串并传递它,你会没事的。

此外,如果您想继续使用 ELEMENTS 数组,则必须这样创建它们:

http://jsfiddle.net/DyRCZ/10/

rows.push($("<tr/>").html('<td colspan="2">This is item ' + i + '</td>'));
于 2012-08-23T17:33:19.353 回答