nextSibling разница между IE и FF? - PullRequest
1 голос
/ 02 января 2011

Я только что написал код javascript для многоуровневого размещения в Raphaeljs, он отлично работает на FF Но это не на IE. Проблема в том, что IE возвращает null для nextSibling для любого объекта.

Как правильно его использовать, или в IE есть nextElementSibling вызов?

Вот фрагмент кода, который я использовал для изменения порядка объектов:

n = items[selected_item_id].nextSibling.id;
if (n != '') {
  items[selected_item_id].insertAfter(items[n]);
}

<div id="consarea">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" height="100%">
<desc>Created with Raphaël</desc>
<defs/>
<rect x="188" y="100" width="200" height="200" r="10" rx="10" ry="10" fill="#ee8515" stroke="none" style="opacity: 1;" opacity="1"/>
<rect x="253" y="158" width="50" height="50" r="0" rx="0" ry="0" fill="#0080ff" stroke="none" style="opacity: 1;" opacity="1" id="0"/>
<rect x="230" y="140" width="50" height="50" r="0" rx="0" ry="0" fill="#c03022" stroke="none" style="opacity: 1;" opacity="1" id="1"/></svg>

здесь это выше. часть HTML, над которой я работаю

Ответы [ 2 ]

1 голос
/ 02 мая 2013

Попробуйте использовать следующую функцию.Это кросс-браузерный фрагмент кода для следующего брата.

    function getNextElementSibling(CurrentElement) {
    if (CurrentElement.nextElementSibling) {
        return CurrentElement.nextElementSibling
    } else {
        do {
            CurrentElement = CurrentElement.nextSibling;
        } while (CurrentElement && CurrentElement.nodeType !== 1);
        return CurrentElement;
    }
}
1 голос
/ 02 января 2011

свойство nextElementSibling поддерживается только в IE9, но не в предыдущих версиях IE (вы можете проверить его здесь .

если вы хотите, вы можете получить следующего брата, используя JQuery, следующим образом:

var sibling = $('#' + selected_item_id).next();
alert(sibling.attr('id'));
...