В чем разница между этими тремя формами:
this
$this
$(this)
В чем разница между этими тремя формами:
this
$this
$(this)
В типичном использовании вы обычно видите их как это (использование $this
может отличаться):
this
- Относится к элементу DOM в обработчике, который вы сейчас используете, но это может быть другой объект целиком в других ситуациях, но он всегда является контекстом.$this
- обычно создается var $this = $(this)
кэшированная версия завершенной версии jQuery для эффективности (или отключает $(this)
, чтобы получить то же самое во многих случаях).$(this)
- обернутая jQuery версия элемента, поэтому у вас есть доступ к всем его методам (те, что указаны в $.fn
в частности).this
- это объект, на который был вызван метод$this
- это слабо названная переменная без особого значения.$(this)
вызывает слабо названную функцию $
с this
в качестве единственного аргументаВ обработчике событий jQuery:
this
- элемент DOM, назначенный обработчику событий для$(this)
- это объект jQuery, созданный из этого элемента.$this
- обычно переменная, содержащая результат $(this)
В целом:
this внутри функции ссылается на объект или примитив, вызываемый функцией. Когда функция используется как конструктор, она ссылается на новый объект, который строится. Вне любой функции this
относится к глобальному объекту (window
в нестрогом режиме).
Вы можете найти хорошее подробное объяснение в MDN.
$this - это имя переменной. В именах переменных JavaScript может начинаться с $
. Некоторым нравится использовать его в качестве префикса для переменных, содержащих объекты jQuery:
var body = document.body; // no prefix for a plain DOM object
var $body = jQuery('body'); // prefix for the same object wrapped in jQuery
var $this = $(this);
$(this) - это вызов функции, где $
- имя функции, а this
- его аргумент:
var $ = alert;
$(this); // [object Window]
$
не имеет никакого особого значения. Но jQuery определяет функцию $()
как сокращенное выражение для jQuery()
. В зависимости от своих аргументов эта функция может много разных вещей.
В контексте jQuery 'this' - это объект, на который был вызван метод. '$ this' - действительно слабо названная переменная без особого значения. '$ (this)' передает 'this' в jQuery, который вернет объект jQuery, связанный с любым 'this', если 'this' является объектом DOM.
Ваш вопрос будет лучше обслуживаться с большим контекстом.
Однако я предполагаю, что вы спрашиваете о переменных в контексте обратного вызова для события элемента (например, click
).
this
- это контекст вашего обработчика (обычно элемент DOM, в случае обработчика событий DOM)$this
обычно используется для хранения результата $(this)
$(this)
возвращает объект jQuery, который обертывает this
- для получения дополнительной информации см. jQuery.Развернувшись на том, что сказал Давид:
$this
обычно используется для копирования копии объекта this
в текущей области. Например, с помощью var $this = this;
вы можете использовать переменную $this
в любой области текущей области и всегда иметь возможность ссылаться на этот объект, который в противном случае изменился бы, если бы просто ссылался на this
... Мне лично не нравится соглашение об именах $this
и предпочитают что-то вроде var parentScope
$(this)
- это функция (var $ = function(){}
), используемая некоторыми фреймворками, такими как jQuery или PrototypeJs. Причина, по которой он используется, состоит в том, что $
очень легко набирать вместо someLongFunctionName
и потому, что в коде он обычно называется many, ему проще как можно короче