2015-02-24 2 views
0

При написании кода я столкнулся с двумя способами сделать то же самое. Я ищу наиболее эффективный способ найти предыдущего брата, чтобы извлечь из него строку.Поиск предыдущего элемента сиблинга в Javascript

В моем проекте в настоящее время используется jQuery, поэтому оба варианта доступны мне.

https://developer.mozilla.org/en-US/docs/Web/API/Node/previousSibling

http://api.jquery.com/prev/

Что такое лучший вариант использовать и почему?

+1

Оба имеют свои плюсы и минусы. – Quentin

ответ

3

Если вы можете сделать это в Vanilla JavaScript, тогда сделайте это.

jQuery всегда будет медленнее, поскольку он проходит через множество вызовов функций и слоев абстракции - эти слои делают его (предположительно *) намного проще для написания кода, но браузер должен делать значительно больше работы для того же эффекта ,

* Может быть, я делал Vanilla JavaScript слишком долго, но я считаю JQuery ужасно использовать лично ...

1

Если вы собираетесь работать с ним в качестве объекта JQuery после их загрузки , используйте jQuery. В противном случае довольно дорого переконвертировать его в объект jQuery. Если вы собираетесь использовать только Vanilla JS, используйте простые методы DOM.

0

JQuery внутренне использует метод previousSibling, поэтому он будет немного медленнее, чем собственный метод (например, предыдущий). Единственное, что возвращают разные результаты, previousSibling возвращает узел, а prev возвращает элемент оболочки jquery для того же узла.

1

previousSibling - это родное свойство, очевидно, что оно будет быстрее, но оно доступно только для чтения, вы можете использовать его только для чтения свойств предыдущего узла. Но он не поддерживается в IE8 или ниже, поэтому вам придется прибегать к previousElementSibling в тех браузерах, которые также предоставляют доступ только для чтения к предыдущему узлу.

Если вы собираетесь снова обернуть возвращаемый узел в jQuery, я предлагаю вам использовать prev, поскольку он абстрагирует все эти различия браузеров и также возвращает объект jQuery. Так что для этого немного накладных расходов.

Смежные вопросы