Например, в одном UL есть 10 LI, и на третьем LI есть особый стиль (например, цвет красный, а другие - черные). Я хочу установить цвет всех остальных LIS - не включая Red LIS - RED. В это время вам нужно получить все братские узлы Red Lis.
Братья - это те, кто такие же, как у вас, ни предыдущий, ни следующий, и может быть (брат) старше вас или моложе вас. Точно так же используются братские узлы. Вот обычный способ получить братские узлы.
Код выглядит следующим образом
Функция братьев и братьев (elm) {var a = []; var p = elm.parentnode.children; for (var i = 0, pl = p.length; i <pl; i ++) {if (p [i]! == elm) a.push (p [i]);} return a;}Идея: сначала получите всех детей родительского узла этого элемента. Поскольку все дети также включают этот элемент, вы должны удалить себя из результата.
Есть еще один метод, который выглядит странно, чтобы получить исходный код братских узлов в jQuery:
Код выглядит следующим образом
Функция брат (elem) {var r = []; var n = elem.parentnode.firstchild; for (; n; n = n.nextsibling) {if (n.nodetype === 1 && n! == elem) {r.push (n);}} return r;}Идея: сначала найдите первый дочерний узел родительского узла этого элемента, а затем цикл, чтобы найти следующий брат -узел этого узла, пока поиск не будет завершен.
Мне интересно, почему JQuery использует этот метод. Этот метод более эффективен, чем первый метод?
После моего предварительного теста - более 1500 LI, вышеупомянутые два метода почти не имеют разницы в эффективности, и оба они успешны в течение нескольких миллисекунд. Тестовая среда - хром и Firefox.
Если вам необходимо получить все узлы братьев и сестер, вы можете использовать любой из вышеперечисленных методов.
Конечно, я проверю два вышеуказанных метода в будущем. Если есть какие -либо различия, я обновлю их.
Способ поиска у узлов JQUERY и брата
jquery.parent (expr) Найдите родительский узел, вы можете пройти в эксплуат для фильтрации, такой как $ ("span"). Parent () или $ ("span"). Parent (". Class")
jquery.parents (expr), похожий на jquery.parents (expr), но он ищет все элементы предка, не ограничиваясь родительскими элементами
jquery.children (expr). Возвращает все детские узлы. Этот метод будет возвращать только прямые детские узлы и не будет возвращать все дочерние узлы.
jquery.contents () возвращает все следующее содержимое, включая узлы и текст. Разница между этим методом и детьми () заключается в том, что, включая пустой текст, также будет использоваться в качестве
Возврат объекта jQuery, дети () только возвращают узел.
jquery.prev (), возвращает предыдущий узел брата, не все узлы братьев и сестер
jquery.prevall (), вернуть все предыдущие узлы братьев и сестер
jquery.next (), возвращает следующий узел брата, не все узлы братьев и сестер
jquery.nextall (), вернуть все последующие узлы братьев и сестер
jquery.siblings (), возвращает родной узел, независимо от фронта и сзади
jquery.find (expr) полностью отличается от jQuery.filter (expr). jquery.filter () должен отфильтровать часть начальной коллекции объектов jQuery, в то время как jQuery.find ()
Результат возврата не будет иметь контента в первоначальной коллекции, например, $ ("p"), Find ("span"), начните искать <pan> из элемента <p>, который эквивалентен $ ("p span")
Приведенная выше статья JS для получения всех братских узлов элементов - это все контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.