Вопрос по javascript, this, jquery – В чем разница между «$ (это)» и «это»?

542

В настоящее время я работаю над этим учебником:Начало работы с jQuery

Для двух примеров ниже:

<code>$("#orderedlist").find("li").each(function (i) {
    $(this).append(" BAM! " + i);
});
$("#reset").click(function () {
    $("form").each(function () {
        this.reset();
    });
});
</code>

Обратите внимание, что в первом примере мы используем$(this) добавить текст внутри каждогоli элемент. Во втором примере мы используемthis непосредственно при сбросе формы.

$(this) кажется, используется гораздо чаще, чемthis.

Мое предположение в первом примере,$() преобразует каждыйli элемент в объект JQuery, который понимаетappend() функция, тогда как во втором примереreset() можно вызвать прямо в форме.

В основном нам нужно$() для специальных функций только для jQuery.

Это правильно?

@ Рейгель, почему это было защищено? ОП задал вопрос и угадал правильный ответ. vol7ron
@ Рейгель: Я думаю, что я должен задать это в мета, но если это все, что требуется для защиты, не все вопросы должны бытьprotected vol7ron

Ваш Ответ

6   ответов
359

$() является функцией конструктора jQuery

this является ссылкой на элемент вызова DOM.

Так что в основном в$(this)Пропускаешьthis в$() в качестве параметра, чтобы вы могли вызывать методы и функции jQuery.

-2

this ссылаться на объект JavaScript и$(this) используется для инкапсуляции с JQuery.

Example =>

// Getting Name and modify css property of dom object through jQuery
var name = $(this).attr('name');
$(this).css('background-color','white')

// Getting form object and its data and work on..
this = document.getElementsByName("new_photo")[0]
formData = new FormData(this)

// Calling blur method on find input field with help of both as below
$(this).find('input[type=text]')[0].blur()

//Above is equivalent to
this = $(this).find('input[type=text]')[0]
this.blur()

//Find value of a text field with id "index-number"
this = document.getElementById("index-number");
this.value

or 

this = $('#index-number');
$(this).val(); // Equivalent to $('#index-number').val()
$(this).css('color','#000000')
71

jQueryрекомендуется использовать$(this) обычно. Но если вы знаете (вы должны учиться и знать) разницу, иногда ее удобнее и быстрее использоватьthis, Например:

$(".myCheckboxes").change(function(){ 
    if(this.checked) 
       alert("checked"); 
});

легче и чище, чем

$(".myCheckboxes").change(function(){ 
      if($(this).is(":checked")) 
         alert("checked"); 
});
Error: User Rate Limit Exceeded
498

Да вам нужно только$() когда вы используете jQuery. Если вы хотите, чтобы JQuery помогал выполнять DOM, просто помните об этом.

$(this)[0] === this

По сути, каждый раз, когда вы возвращаете набор элементов, jQuery превращает его вобъект jQuery, Если вы знаете, что у вас есть только один результат, он будет в первом элементе.

$("#myDiv")[0] === document.getElementById("myDiv");

И так далее...

Error: User Rate Limit Exceeded$(this)[0]Error: User Rate Limit ExceededthisError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded$(this)[0]Error: User Rate Limit Exceeded$("#myDiv")[0]Error: User Rate Limit Exceededdocument.getElementById("myDiv")Error: User Rate Limit Exceeded
39

$(this), вы включили функциональность jQuery для объекта. Просто используяthis, он имеет только общую функциональность Javascript.

89

$(this) для функций jQuery, но когда вы хотите получить доступ к основным методам javascript элемента, который не использует jQuery, вы можете просто использоватьthis.

Похожие вопросы