2017-12-04 11 views
1

私は現在、必要に応じて動作している次のコードを持っています。プロパティ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が見つかりません。ブランク。

明らかに間違っていますか?必要に応じて詳細情報を提供することができます

+2

その他の質問私はIDEバグについて見たことがあるが、話題にはなっていない、FWIWとは考えられていない。 WebStormがこれを行うときに他の人が同じ質問をすることがあります。 :-) [tag:webstorm]タグを追加したことがわかります。これは良い考えです。おそらくタイトルを「WebStormでinsertBeforeに無効な引数があると教えてくれるのはなぜですか?検索可能性を助けるためにいくつかの... –

+0

良いヒント。完了しました。 –

答えて

3

私のIDEではinsertBefore()に無効な引数があるという警告が表示されていました。

あなたのIDEは誤っています。誤ってthe DOM's insertBeforeのルールをjQueryのinsertBeforeに適用しています。 jQueryのオリジナルの使い方はうまくいきます。 DOMを使用している場合は、別の引数を付ける必要があります。しかし、それらは全く異なる機能です。

+1

あなたがこれを投稿したので、私はすでにこれを発見し、それについて尋ねたことを覚えています。 JetBrainsのバグとして提出されました。 –

+1

バグを見つけられなかったので、https://youtrack.jetbrains.com/issue/WEB-30081を開いた –

関連する問題