JQuery и объект this - PullRequest
       20

JQuery и объект this

5 голосов
/ 20 августа 2009

У меня есть следующая функция JQuery, присоединяемая к событию размытия n текстовых полей на веб-странице.

$(document).ready(function() {
        $("input[id$='_txtTuitionAmt']").blur(function() {
            alert(this.value);
        })
    });

Работает просто отлично. Когда пользователь выходит из любого текстового поля, появляется всплывающее окно с предупреждением и отображается значение в текстовом поле.

Что меня смущает, так это "this.value", будь то JQuery или JavaScript. Правильно ли я использую объект this, или я должен делать что-то еще, чтобы получить значение элемента?

Извините, если мой вопрос кажется немного темным. Я просто пытаюсь разобраться с «этим» объектом и как он работает. Я заглянул в документацию по JQuery, но ничего не нашел по «этому».

Ответы [ 5 ]

13 голосов
/ 20 августа 2009

это относится к текущему объекту dom (то же самое, то есть document.getElementById("someid") относится к требуемому объекту dom). На основе браузера вы теперь можете получить доступ к функциям / полям этого объекта (т. Е. this.nodeName, this.value, ...). Вы получаете доступ к тому, что обеспечивается реализацией браузера.

Если вы используете $ (this) (или $("#someid") или $(document.getElementById("someid"))), вы эскапулируете объект в jquery - таким образом, теперь вы можете получить доступ к функциям и полям jquery (т.е. , ....)

Если у вас есть объект jquery (то есть var n = $(this).find("#someid");), и вы хотите избавиться от капсулы jquery, поскольку вам нужна стандартная функция dom, вы получаете .get (0) .

этот сам может разрешать различные объекты, в зависимости от того, где он вызывается. Это может быть узел, если он вызывается в onclick или другом обработчике события (<div id="asdf" onclick="alert(this.id)... - будет печатать asdf ), форма или какой-либо другой объект - см. http://www.quirksmode.org/js/this.html

8 голосов
/ 20 августа 2009

this = элемент DOM

$ (this) = jQuery'ified

Обычно я использую старый добрый JavaScript, где могу. Альтернатива jQuery в этом случае - $(this).val() - я не вижу в этом необходимости.

4 голосов
/ 20 августа 2009

Документ JQuery для Ядро / каждый :

Выполнить функцию в контексте каждого соответствующего элемента.

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

1 голос
/ 20 августа 2009

«this» относится к выбранному элементу jQuery непосредственно перед этим. Поскольку вы используете «this» внутри функции обратного вызова jQuery, «this» фактически указывает на объект DOM, выбранный jQuery. Если бы вы использовали «$ (this)», это бы непосредственно указывало на объект jQuery, являющийся / являющийся соответствующим элементом (ами). И, как уже упоминалось, позволяет применять функции jQuery к этому элементу.

См .: это демистифицировано и Это ключевое слово .

0 голосов
/ 20 августа 2009

Эта статья (пожалуйста, извините за каламбур) объясняет, как это работает, немного подробнее:

Почему я до сих пор предпочитаю Prototype JQuery

Автор считает, что это плохое дизайнерское решение для библиотеки JQuery, но я не поддерживаю ни один из способов. Я просто подумал, что статья была довольно интересной.

...