В настоящее время я работаю над этим учебником: Начало работы с jQuery
Для двух примеров ниже:
$("#orderedlist").find("li").each(function (i) {
$(this).append(" BAM! " + i);
});
$("#reset").click(function () {
$("form").each(function () {
this.reset();
});
});
Обратите внимание, что в первом примере мы используем $(this)
для добавления текста внутри каждого li
элемента. Во втором примере мы используем this
непосредственно при сбросе формы.
$(this)
кажется, используется гораздо чаще, чем this
.
Мое предположение в первом примере $()
заключается в преобразовании каждого li
элемента в объект jQuery, который понимает append()
функцию, тогда как во втором примере reset()
его можно вызывать непосредственно в форме.
В основном нам нужны $()
специальные функции только для jQuery.
Это правильно?
javascript
jquery
this
Кевин Ву
источник
источник
Ответы:
Да, вам нужно только
$()
когда вы используете JQuery. Если вам нужна помощь jQuery в DOM, просто помните об этом.По сути, каждый раз, когда вы возвращаете набор элементов, jQuery превращает его в объект jQuery . Если вы знаете, что у вас есть только один результат, он будет в первом элементе.
И так далее...
источник
$(this)[0]
более ,this
если они всегда то же самое?$(this)[0]
я просто использовал это, чтобы проиллюстрировать концепцию. :) Я использую в$("#myDiv")[0]
течениеdocument.getElementById("myDiv")
хотя.$()
является функцией конструктора jQuerythis
является ссылкой на элемент вызова DOM.Таким образом, по сути,
$(this)
вы просто передаетеthis
в$()
качестве параметра параметр, чтобы вы могли вызывать методы и функции jQuery.источник
Да, вам нужны
$(this)
функции jQuery, но когда вы хотите получить доступ к основным javascript-методам элемента, который не использует jQuery, вы можете просто использоватьthis
.источник
При использовании
jQuery
рекомендуется использовать$(this)
обычно. Но если вы знаете (вы должны учиться и знать) разницу, иногда ее удобнее и быстрее использовать простоthis
. Например:легче и чище, чем
источник
this
это элемент,$(this)
это объект jQuery, построенный с этим элементомБолее глубокий взгляд
this
MDN содержится в контексте выполненияОбласть действия относится к текущему контексту исполнения ECMA . Чтобы понять
this
, важно понять, как контексты выполнения работают в JavaScript.контексты исполнения связывают это
Когда элемент управления входит в контекст выполнения (код выполняется в этой области), среда для переменных настраивается (лексическая и переменная среды) - по сути, это устанавливает область для ввода переменных, которые уже были доступны, и область для локальных переменных, которые будут хранится), и связывание
this
происходит.JQuery связывает это
Контексты исполнения образуют логический стек. В результате контексты, находящиеся глубже в стеке, имеют доступ к предыдущим переменным, но их привязки могли быть изменены. Каждый раз, когда jQuery вызывает функцию обратного вызова, он изменяет привязку this с помощью
apply
MDN .Результатом вызова
apply
является то, что внутри функций обратного вызова jQuerythis
ссылается на текущий элемент , используемый функцией обратного вызова.Например,
.each
обычно используется функция обратного вызова.each(function(index,element){/*scope*/})
. В этом смыслеthis == element
это правда.Обратные вызовы jQuery используют функцию apply, чтобы связать вызываемую функцию с текущим элементом. Этот элемент происходит из массива элементов объекта jQuery. Каждый созданный объект jQuery содержит массив элементов, которые соответствуют API селектора jQuery, который использовался для создания экземпляра объекта jQuery.
$(selector)
вызывает функцию jQuery (помните, что$
это ссылка наjQuery
code:)window.jQuery = window.$ = jQuery;
. Внутри функция jQuery создает экземпляр функционального объекта. Так что, хотя это может быть не сразу очевидно, используется$()
внутреннее использованиеnew jQuery()
. Часть конструкции этого объекта jQuery - найти все совпадения селектора. Конструктор также будет принимать HTML-строки и элементы . Когда вы переходитеthis
к конструктору jQuery, вы передаете текущий элемент для объекта jQuery, который будет создан . Затем объект jQuery содержит массивоподобную структуру элементов DOM, соответствующих селектору (или только один элемент в случаеthis
).После создания объекта jQuery API jQuery теперь доступен. Когда вызывается функция API jQuery, она будет внутренне выполнять итерацию по этой массивоподобной структуре. Для каждого элемента в массиве он вызывает функцию обратного вызова для API, связывая обратные вызовы
this
с текущим элементом. Этот вызов можно увидеть в фрагменте кода выше, гдеobj
это массивоподобная структура иi
итератор, используемый для позиции в массиве текущего элемента.источник
Да, используя
$(this)
, вы включили функциональность jQuery для объекта. Просто используяthis
, он имеет только общую функциональность Javascript.источник
this
ссылаются на объект javascript и$(this)
используются для инкапсуляции с помощью jQuery.Пример =>
источник