我有一些 javascript,并且 parentNode 或 previviousElementSibling 似乎在 IE8 中被破坏了。该代码在 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 输入是提交者。这适用于其他浏览器。
任何想法,哪一点行不通,为什么?
最佳答案
直到 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()
。关于javascript - parentNode 或 previousElementSibling 在 IE8 中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5197825/