1

我有一些 jQuery 代码在 Firefox 和 Chrome 中运行良好,但在 Internet Explorer 8 中不起作用(尚未在其他 IE 版本中测试)。Internet Explorer 以标准模式运行。

下面代码的目的是动态创建一个新的列表项。它的内容设置为隐藏部分元素内部的表单的内容。使用 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 元素并且正在使用 HTML5 doctype: <!DOCTYPE html>。在这些假设下,我会断言您需要做一些事情来使您的标记“对 IE 友好”。

首先确保 IE 真正在IE8 标准兼容模式下运行*通过将以下元标记添加到您的 head 部分:

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

在标准兼容性设置之后立即添加对html5shiv的引用,这是一个用于 IE 识别和设置 HTML5 元素样式的 JavaScript shiv:

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

在这两个变化之间,你应该很高兴。更改后,按CTRL+强制 IE 进行完整的资源刷新F5

* 如果这是一个新网站,您可能需要考虑使用IE=edge它,因为它告诉 Internet Explorer 使用可用的最高模式。

于 2012-05-04T16:12:02.843 回答