parentNode或previousElementSibling在IE8中不起作用

时间:2011-03-04 18:35:02

标签: javascript internet-explorer-8

我有一些javascript,而且在IE8中,parentNode或previviousElementSibling似乎都在破坏。代码在firefox和IE9中运行良好。这是未实现的行:

$(submitter.parentNode.parentNode.previousElementSibling).children('#mark_as_broken').show();

代码就像

<form><div><input id=mark_as_broken></input></div></form>
<form><div><input id=mark_as_fixed></input></div></form>

其中mark_as_fixed输入是提交者。这适用于其他浏览器。

任何想法都不起作用,以及为什么?

1 个答案:

答案 0 :(得分:13)

IE9之前不支持

previousElementSibling

http://www.quirksmode.org/dom/w3c_core.html#t84

这是一个应该有效的功能。 尚未测试过。似乎工作。

var previousElementSibling = function( el ) {
    if( el.previousElementSibling ) {
        return el.previousElementSibling;
    } else {
        while( el = el.previousSibling ) {
            if( el.nodeType === 1 ) return el;
        }
    }
}

$( previousElementSibling(submitter.parentNode.parentNode) )

修改

您没有提到jQuery,但您似乎正在使用其API。如果是这样,你可以这样做:

$(submitter).closest('form').prev().find('#mark_as_broken').show();

根据您的标记,您似乎应该使用.find()而不是.children()