我有以下代码,目前正在按预期工作。它根据属性http://example.com/login?param=value
将元素插入objGrid
。
loadOrder
如上所述,这似乎运作良好。但是我在IDE中发现警告let $elTileTitle = $('<div/>', { class: 'tileTitle', html: tile.title });
let $elNext;
for (let i = tile.loadOrder; i < objectLength(tiles); i++) {
let $potentialNext = $(`.tile[data-loadorder="${i}"]`);
if ($potentialNext.length > 0) {
$elNext = $potentialNext;
break;
}
}
if (typeof $elNext !== 'undefined') {
$elTile.insertBefore($elNext);
} else {
let $elPrev;
for (let i = tile.loadOrder; i < 0; i--) {
let $potentialPrev = $(`.tile[data-loadorder="${i}"]`);
if ($potentialPrev.length > 0) {
$elPrev = $potentialPrev;
break;
}
}
if (typeof $elPrev !== 'undefined') {
$elTile.insertAfter($elPrev);
} else {
$elTile.appendTo(objGrid);
}
}
的参数数量无效。查看文档后,我用以下内容替换了该行:
insertBefore()
这表现出奇怪的行为。此代码运行后,$('#grid').insertBefore($elTile,$elNext);
为空。奇怪的是,所有的磁贴都存在于DOM中(即,如果我在控制台中键入$('#grid')
,我会得到一个具有所有预期属性的对象),但是我无法在HTML中找到它们(“元素”选项卡)用户界面是空白的。
有什么明显我做错了吗?如果需要,我可以提供更多信息
答案 0 :(得分:3)
但是我注意到我的IDE中发出一条警告:insertBefore()的参数数量无效。
你的IDE错了。它错误地将the DOM's insertBefore
的规则应用于您使用 jQuery的 insertBefore
。你最初使用jQuery就好了。 如果你使用的是DOM,你需要给它另一个参数。但它们的功能完全不同。