实际上,jQuery是JavaScript DOM的一个包装,它既增强和简化了它。 非常简单jQuery选择返回jQuery对象/秒即
var jQueryResults = $("article"); //Contains all article elements in the DOM as JQuery objects
然而,与Java语言中选择元素,则返回HTML DOM元素,即
var normalResults = document.getElementsByTagName("article");//Contains all article elements in the DOM as HTML objects
的问题出现在DOM对象不提供相同的功能, JQuery对象提供。
下面是一个事件例子示出的区别:
$('.changeColorHover').hover(function() {
this.attr("style", "color:red");
}); //Will not work as we are trying to call a JQuery method on a DOM object
考虑到提到的上方的“这个”关键字是一个DOM对象,因此你需要将其转换为一个jQuery对象,以便利用jQuery方法。
$('.changeColorHover').hover(function() {
$(this).attr("style", "color:red");
}); //Will work since we have first converted the DOM object to a JQuery object
总结一下,this关键字允许你访问调用事件的对象,因为这会引发引发事件的对象。但是,这是一个DOM对象,而不是一个jQuery对象。因此,除非将其转换为jQuery对象,否则您想使用的任何jQuery方法都不可用。
是的,它是一个jquery idiom –
@Matt:代码中没有jQuery。将“this”赋值给另一个变量在“普通JavaScript”中也很常见。 –
@Felix:它是一个插件,这意味着这是指一个jQuery对象。有(或曾经是)用jquery对象加$前缀的jquery方法。因此,它是一个jQuery的问题。如果它不是$ jquery,那么你可能会看到,那个,自己或者更具描述性的关于这个实际上是什么的意思 –