1

Firefox と Chrome では問題なく動作するが、Internet Explorer 8 では動作しない jQuery コードがいくつかあります (他の IE バージョンではテストしていません)。Internet Explorer は標準モードで実行されています。

以下のコードの目的は、その場で新しいリスト項目を作成することです。そのコンテンツは、非表示の section 要素内にあるフォームのコンテンツに設定されます。IE を使用すると、section 要素が非表示になり、li がリストに追加されますが、空になります。

IE でのこのコードの何が問題になっていますか?

$('ul.elementlist').on('click', '.add-element-icon', function (event) {
    var plusIcon = $(this);
    plusIcon.hide();

    var parentLi = plusIcon.parent();

    var before = parentLi.attr('id');

    var after = parentLi.next().attr('id');
    if (typeof after === "undefined") {
        after = 'none';
    }

    var li = $('<li class="element">').html($('section.add-element').html());
    $('input[name="elementBefore"]', li).val(before);
    $('input[name="elementAfter"]', li).val(after);
    li.insertAfter(parentLi);
});
4

1 に答える 1

4

この要素を使用しているのでsection、他のHTML5要素を使用していて、HTML5Doctypeを使用していると思います<!DOCTYPE html>。これらの仮定の下で、マークアップを「IEフレンドリー」にするためにいくつかのことを行う必要があると私は断言します。

まず、ヘッドセクションに次のメタタグを追加して、IEが本当にIE8標準互換モードで実行されていることを確認します。

<meta http-equiv="x-ua-compatible" content="IE=8"/>

標準の互換性設定の直後に、IEがHTML5要素を認識してスタイルを設定するためのJavaScriptシブであるhtml5shivへの参照を追加します。

<!--[if IE]>
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->

これらの2つの変更の間に、行ってもよいはずです。CTRL変更後、 +を押してIEに完全なリソース更新を強制しますF5

*これが新しいWebサイトである場合は、IE=edgeInternet Explorerに利用可能な最高のモードを使用するように指示するため、使用を検討することをお勧めします。

于 2012-05-04T16:12:02.843 に答える