私はビジネスCatalystサイト(Adobe)に取り組んでいます。別のスクリプトが後で情報を追加する項目の各行の後にプレースホルダdivを挿入する必要があります。これはほとんどのブラウザでうまくいきますが、IE 11では何もしません。Javascriptのdocument.containsはIE11で動作しません
このスクリプトは、insertAfterに行の最後の項目を探します。行には4つの項目が含まれますが、最後の行には1または2しかない場合は最後の行の後に挿入されます。
Jquery 1.1を使用していましたが、1.7に切り替えただけで違いはありません。
私のマークアップ:
<div class="roller col-md-3" id="roller001">
<div class="roller-type">
<div class="roller-image">
{tag_small image_nolink}
</div>
<a class="roller-btn" onclick="appendRoller{tag_itemid}('{tag_itemid}')" href="javascript:void(0);">{tag_name_nolink}</a>
</div>
</div>
<div class="roller col-md-3" id="roller002">
<div class="roller-type">
<div class="roller-image">
{tag_small image_nolink}
</div>
<a class="roller-btn" onclick="appendRoller{tag_itemid}('{tag_itemid}')" href="javascript:void(0);">{tag_name_nolink}</a>
</div>
</div>
スクリプト:私は問題は 'document.contains' では全くなく、 'insertAfter' コマンドではなかったが実現しました
<script type="text/javascript">
$(document).ready(function(){
var rollerItems = document.getElementsByClassName('roller');
for (n=0; n<rollerItems.length; n++) {
if(n%4 == 0) {
var rowEnd = rollerItems[n];
if(document.contains(rollerItems[n+1])) { rowEnd = rollerItems[n+1]; }
if(document.contains(rollerItems[n+2])) { rowEnd = rollerItems[n+2]; }
if(document.contains(rollerItems[n+3])) { rowEnd = rollerItems[n+3]; }
$('<div class="popup-row"></div>').insertAfter(rowEnd);
}
}
});
</script>
'rollerItems'がドキュメントから取得されるので、なぜ' document.contains'をチェックする必要がありますか?それは同音異義語ではないでしょうか? 'n + 1> = rollerItems.length' – slebetman
良い点だけを確認することができます。私の考えはinsertAfterをトリガする行の最初の項目が必要ですが、divを挿入する前にその行にもっと多くの項目が存在するかどうかを確認する必要がありますが、あなたの方法はより良いと思います。 –
スタックオーバーフローでIEのdocument.contains問題で何も見つけることができなかったので、私はこのソリューションをとにかく残しておくことを検討しています... –