В чем разница между этими тремя формами:
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, ему проще как можно короче