如何在没有JQuery的情况下正确实现跨浏览器兼容的nextSibling / nextElementSibling函数?

时间:2012-06-15 09:47:17

标签: javascript cross-browser

我需要更新一些旧的Javascript才能与浏览器兼容。该代码最初是为IE6创建的,由于HTML的布局方式,因此使用了nextSibling和previousSibling。

显然nextSibling和previousSibling在Firefox等中的工作方式不同。下一个最佳选择nextElementSibling在旧的IE浏览器中不起作用。似乎我需要做的是创建一个适用于大多数浏览器的 nextElementSibling 等效函数。

这是我的尝试似乎没有正常工作:

function getNextElementSibling(CurrentElement) {
    if (CurrentElement.nextElementSibling) {
        return CurrentElement.nextElementSibling
    } else {
        do {
            CurrentElement = CurrentElement.nextSibling;
        } while (CurrentElement && CurrentElement.nodeType !== 1);
        return CurrentElement;
    }
} 

需要做些什么才能修复/替换它?

请注意,JQuery和其他库不是选项

1 个答案:

答案 0 :(得分:1)

我有同样的问题,我觉得奇怪的是dojo-framework(我使用的是v1.7)没有为此提供方便的方法。

我的浏览器兼容性问题与IE版本7,8和9以及webkit浏览器(最新版本)有关,我还在Firefox 14上进行了测试,似乎可以正常工作。

function getNextElementSibling(element) {

    if (element.nextElementSibling) {

        return element.nextElementSibling;
    } else {

        return element.nextSibling;
    } 
}