我目前正在学习本教程:jQuery入门

对于下面两个例子:

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

注意,在第一个例子中,我们使用$(this)在每个li元素中附加一些文本。在第二个例子中,我们在重置表单时直接使用这个方法。

$(this)似乎比this用得多。

我猜在第一个例子中,$()将每个li元素转换为一个jQuery对象,它可以理解append()函数,而在第二个例子中,reset()可以直接在表单上调用。

基本上,我们需要$()用于特殊的仅限jquery的函数。

这对吗?


当前回答

是的,jQuery函数需要$(this),但是当你想要访问不使用jQuery的元素的基本javascript方法时,你可以使用this。

其他回答

是的,你只需要$()当你使用jQuery。如果你需要jQuery的帮助来做DOM的事情,请记住这一点。

$(this)[0] === this

基本上每次你得到一组元素回来,jQuery就会把它变成一个jQuery对象。如果你知道你只有一个结果,它就会在第一个元素中。

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

等等……

是的,通过使用$(this),你为对象启用了jQuery功能。通过使用这个,它只有一般的Javascript功能。

this引用一个javascript对象,$(this)用于用jQuery封装。

示例= >

// 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')

在使用jQuery时,建议通常使用$(this)。但如果你知道(你应该学习并知道)其中的区别,有时只使用这个会更方便、更快。例如:

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

更容易更纯粹吗

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

是的,jQuery函数需要$(this),但是当你想要访问不使用jQuery的元素的基本javascript方法时,你可以使用this。