【发布时间】:2014-03-26 05:49:53
【问题描述】:
我遇到了 jQuery 函数 prepend() 和 after() 的问题,它们在 Safari 或 IE 中没有按预期执行。在这两个开发者工具中仍然看不到任何警告。这段代码在 Chrome 和 Firefox 中都能正常运行。
我正在尝试(并成功)完成的是通过 jQuery 对几行进行排序。数组中的第一个元素将作为#tbody 元素的第一个子元素移动,其余元素将依次排序。
var $previousCountry = null;
var group_id = "A";
for (var i = 0; i < countries.length; i++) {
var $country = $('#trcountry-' + countries[i].id);
if (i === 0) {
$('#tbody-' + group_id).prepend($country); //Problem 1
}
else {
$previousCountry.after($country); //Problem 2
}
$previousCountry = $country;
}
示例 HTML 代码:
<table>
<tbody id="tbody-A">
<tr id="trcountry-3"><td></td></tr> <!-- In fact a lot of td:s -->
<tr id="trcountry-2"><td></td></tr>
<tr id="trcountry-1"><td></td></tr>
</tbody>
</table>
奇怪的是,我能够执行相同的代码 -
$('#tbody-A').prepend('#trcountry-1'); - 通过所有四种浏览器的开发者工具,每次都成功。
什么会导致这个问题?
【问题讨论】:
-
请分享相关的HTML。
-
@Blazemonger 我编辑了问题。
-
你从哪里得到
group_id? -
@MMM 我想你的问题是相关的。
group_id设置较早,包含一个字母,具体取决于用户选择。但我知道这不是问题的一部分。group_id总是给出预期的结果。为了清楚起见,编辑了问题。
标签: javascript jquery cross-browser dom-manipulation