对于ie8,jquery insertAfter

时间:2013-06-17 22:18:30

标签: jquery internet-explorer-8 append insertafter

        var attachmentDeleteMainModal = $('#attachment-deletion');
        var attachmentDeleteMainModalClone = attachmentDeleteMainModal.clone();
        attachmentDeleteMainModalClone.attr('id', 'attachment-deletion-'+'main');
        attachmentDeleteMainModalClone.insertAfter('#attachment-deletion');

此方法将我的新选择器添加到Chrome中的DOM,但在ie8中不起作用,这是我到目前为止测试的所有内容

append而非insertAfter不会在任一浏览器中创建所需的选择器。但在ie8中它根本不会创造任何东西

这是什么解决方案?任何洞察力赞赏

2 个答案:

答案 0 :(得分:0)

您可以尝试使用

 $('#attachment-deletion').after(attachmentDeleteMainModalClone);

答案 1 :(得分:0)

在IE8中,我在 $ rows.insertAfter($(elem))行中有一个例外,因此我使用以下解决方案对其进行了修复:

            var $rows = $("tr", $(parsedXML));
            try {
                $rows.insertAfter($(elem));
            } catch (error) {
                // we got <table><tbody><tr... from the server and need to paste only all <tr> from it after our tr in $(elem)
                var divData = $("table", $(parsedXML));
                var divTmp = document.createElement("div");
                divTmp.innerHTML = divData[0].xml;
                var children = divTmp.firstChild.firstChild;
                var fragment = document.createDocumentFragment();
                var current = children.firstChild;

                while (current) {
                    fragment.appendChild(current.cloneNode(true));
                    current = current.nextSibling;
                }

                elem.parentNode.insertBefore(fragment, elem.nextSibling);
            }

对不起,“。firstChild.firstChild”并不是很干净,但是对我有用。 我们从服务器获得了<table><tbody><tr...,在<tr>

中的tr之后仅需要粘贴所有$(elem)