What's the difference between '$(this)' and 'this'?
我目前正在学习本教程:jquery入门
以下两个例子:
1 2 3 4 5 6 7 8 | $("#orderedlist").find("li").each(function (i) { $(this).append(" BAM!" + i); }); $("#reset").click(function () { $("form").each(function () { this.reset(); }); }); |
注意,在第一个示例中,我们使用
与
我的猜测是,在第一个示例中,
基本上,我们只需要
这是正确的吗?
是的,使用jquery时只需要
1 | $(this)[0] === this |
基本上,每次返回一组元素时,jquery都会将其转换为jquery对象。如果你知道你只有一个结果,它将在第一个元素中。
1 | $("#myDiv")[0] === document.getElementById("myDiv"); |
等等…
所以基本上,在
是的,jquery函数需要
使用
1 2 3 4 | $(".myCheckboxes").change(function(){ if(this.checked) alert("checked"); }); |
比
1 2 3 4 | $(".myCheckboxes").change(function(){ if($(this).is(":checked")) alert("checked"); }); |
1 2 3 4 5 6 7 8 9 | $(".class").each(function(){ //the iterations current html element //the classic JavaScript API is exposed here (such as .innerHTML and .appendChild) var HTMLElement = this; //the current HTML element is passed to the jQuery constructor //the jQuery API is exposed here (such as .html() and .append()) var jQueryObject = $(this); }); |
更深的看
作用域引用当前执行上下文。为了理解
执行上下文绑定此
当控件进入执行上下文(代码在该范围内执行)时,将设置变量的环境(词汇和变量环境-本质上,这将为已可访问的变量设置一个区域,并为要存储的局部变量设置一个区域),同时发生EDOCX1的绑定(0)。
jquery绑定此
执行上下文形成一个逻辑堆栈。其结果是,栈中较深的上下文可以访问以前的变量,但它们的绑定可能已被更改。每次jquery调用回调函数时,都会使用
1 | callback.apply( obj[ i ] )//where obj[i] is the current element |
调用
例如,在
jquery回调使用apply函数绑定当前元素调用的函数。这个元素来自jquery对象的元素数组。构造的每个jquery对象都包含一个元素数组,这些元素与用于实例化jquery对象的selectorjquery API相匹配。
一旦构建了jquery对象,jquery API现在就公开了。当调用jquery api函数时,它将在内部迭代类似于数组的结构。对于数组中的每个项,它调用API的回调函数,将回调的
是的,通过使用
这引用了一个javascript对象和用于用jquery封装的$(this)。
例=>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | // 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') |