Если кто-то не в состоянии указать на статью Джона Резига, конкретно касающуюся этого вопроса, я сомневаюсь, что на этот счет предлагается окончательный ответ. Но я часто задавался этим вопросом, когда начинал использовать jQuery, и пришел к выводу, что это наименее вредная вещь. В конце концов, вполне возможно, что все, что вам нужно, это элемент DOM. Если вам нужно / вы хотите использовать оболочку jQuery, то $()
- это всего три нажатия клавиш (или больше из вас делают var $this = $(this);
). В отличие от того, что библиотека всегда делает это за вас, что включает в себя несколько вызовов функций и выделение памяти, когда вполне может оказаться, что вам это не нужно.
Например, рассмотрим:
$("input").each(function() {
// Use this.value
});
Там нет никаких оснований для оболочки jQuery вокруг элемента DOM. this.value
- это все, что вам нужно для всех полей input
(кроме input type="file"
, но val()
вам там тоже не поможет). В обработчиках событий (где this
также является «просто» необработанным элементом), вы можете вообще не смотреть на this
.
Но в этом случае:
$(":input").each(function() {
var val = $(this).val();
// Use `val`
});
... есть подлинная причина использования $(this)
: селектор :input
соответствует нескольким различным типам элементов (input
, select
, button
, textarea
), для которых значение получается из разных свойства, и val()
тезисы, которые для вас.
Итак, я пришел к выводу, что предоставление необработанного элемента - это производительность. Если вы вообще не используете его или используете только базовые свойства DOM, нет необходимости заключать его в экземпляр jQuery. Если вам нужно / хотите сделать это, вы можете сделать это в своем коде.