WebStorm 期待 $.insertBefore() 的多个参数?

WebStorm expecting multiple arguments for $.insertBefore()?

我有以下代码,目前可以正常工作。它根据 属性 loadOrder.

将元素插入 objGrid
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);
    }
}

如前所述,这似乎运作良好。但是我注意到 IDE 中有一个警告,即 insertBefore() 的参数数量无效。查看文档后,我将该行替换为:

$('#grid').insertBefore($elTile,$elNext);

这表现出奇怪的行为。此代码运行后,$('#grid') 为空。奇怪的是,所有图块都存在于 DOM 中(即,如果我在控制台中键入 $('#tile-store'),我会得到一个具有所有预期属性的对象),但是我无法在 HTML("Elements" 选项卡)并且 UI 为空白。

有什么明显的我做错了吗?如果需要,我可以提供更多信息

But I noticed a warning in my IDE that insertBefore() had an invalid number of arguments.

你的IDE错了。它错误地应用了 the DOM's insertBefore to your use of jQuery's insertBefore 的规则。您原来使用 jQuery's 就可以了。 如果你使用的是DOM,你需要给它另一个参数。但它们是完全不同的功能。