Часто в функции вы захотите сослаться на объект, вызвавший функцию. Например, в функции обработчика кликов jQuery вы захотите легко получить доступ к элементу DOM, который был нажат, например:

<ul>
    <li>Item1</li>
    <li>Item2</li>
</ul>
<script>
    $('li').click(function() {
        // Add a class to the specific li that was clicked.
    });
</script>

Вы можете использовать ключевое слово Javascript this, которое в случае обратного вызова обработчика событий является ссылкой на элемент DOM, с которого началось событие, например.

<ul>
    <li>Item1</li>
    <li>Item2</li>
</ul>
<script>
    $('li').click(function() {
        $(this).toggleClass('active');
    });
</script>

Этот код добавит «активный» класс к конкретному элементу li, который был нажат.

Но подождите, почему мы используем $(this), а не просто this?

это и $(это)

Когда вы создаете экземпляр jQuery, вы делаете это следующим образом: $( … ), где «…» — некоторый параметр. Вы можете передать строку в качестве параметра, например. $(‘li’). Или вы можете передать ссылку на узел DOM, например.

// 'divs' is a collection of DOM node references
var divs = document.getElementById('div');
// $divs is a jQuery object referencing all the divs. Note the parameter is the variable 'divs', not a string
var $divs = $(divs);

Итак, если this является ссылкой на узел DOM, как это было бы во многих функциях обратного вызова Javascript, вы можете обернуть this в объект jQuery, чтобы получить доступ к jQuery. библиотека методов.

Или, если вам не нужно использовать какой-либо метод jQuery, вы, конечно, можете просто использовать чистый JS, например.

// Pure JS
this.classList.toggle('active');
// jQuery
$(this).toggleClass('active')

TL;DR: если this является ссылкой на элемент DOM, разница между this и $(this) заключается в том, что во-первых, это просто ссылка, во-вторых, к ссылке добавляется библиотека jQuery.

Остались вопросы? Мы предоставляем больше демонстраций в видео ниже:

JS Dojo: учебные пособия по Javascript с поддержкой в ​​режиме реального времени

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

Чтобы узнать больше о JS Dojo и присоединиться к нашей закрытой бета-программе, посетите нас здесь: https://getjsdojo.com