我是JQuery的初学者。
$后点应该何时使用?
$.trim(str)
而非$trim(str)
?
有些情况没有点:$(document).ready
,但不是$.(document).ready
?
感谢。
答案 0 :(得分:19)
在jQuery中,$
是一个变量名,如foo
或bar
,它引用全局jQuery对象。如果要访问jQuery对象上的属性,则使用点。这些基本相同:
$.property
jQuery.property
(由于$
是一个与其他任何变量一样的变量,因此您可以将其设置为您喜欢的任何内容。如果您在包含jQuery库后包含Prototype库,则可能会发生这种情况。 ,这将使$
指向document.getElementById
函数的别名。)
jQuery对象碰巧也是一个函数,所以你可以像调用任何其他函数一样调用该函数:
$(arguments)
alert("arguments!")
另一方面,$trim
只是另一个全局变量,如$
或location
,它可能是您自己定义的函数:
var $trim = function(arguments) {
return "foo";
};
$trim(str)
答案 1 :(得分:18)
我不相信你有一个选择,只有一种语法是正确的,并且实际上会有效。 $
符号只不过是jQuery
函数的简写符号,所以当你写:
$('some selector')
您正在调用一个名为jQuery
的函数,并传入一个字符串,或者在您的情况下,您正在传递document
对象。
当涉及调用方法(例如修剪等辅助方法)时,您需要使用以下语法jQuery.trim()
或$.trim()
。这很容易检查自己,试试这个:
typeof($.trim) //returns "function"
typeof($trim) //returns "undefined"
答案 2 :(得分:3)
当你访问jQuery的静态方法时,在DOM的原型中是不可用的。 trim
是API公开的静态方法。
没有$.fn.trim
我们无法可靠地依赖String.prototype.trim
,因为方法可能不同。
关于未定义的$trim
。 trim
是jQuery的$
方法。您可以执行$['trim']
或$.trim
,这应该是访问它的唯一方式。
答案 3 :(得分:2)
$.foo
语法意味着$
被视为具有名为foo
的字段的对象,该字段通常是您正在调用的函数。所以这与名为foo
的独立函数没什么区别 - 它只是以$.
为前缀,以区别于任何其他函数并将其与jQuery库相关联。
当你使用$(something).foo
时,你将something
传递给jQuery函数,结果取决于你传递的内容(可以是一个查找现有对象的选择器,或者它可以是一堆HTML来构建一个新对象,或者它可以是一个在页面加载时注册运行的函数)。在任何情况下,您都会在生成的返回对象上调用foo
,例如,如果您传递的选择器标识了一个类,则可以将其应用于多个DOM对象。
当jQuery函数对DOM对象(HTML页面的一部分)以外的其他东西进行操作时,使用第一种语法。例如,字符串($.trim
)或数组($.each
)。这些不是页面的元素,它们只是JavaScript中的纯数据。
在对DOM元素进行操作时使用第二种语法 - 使用$(something)
创建一个jQuery对象,它是一个包含零个或多个DOM元素的包装器。然后在返回的包装器上调用函数,以方便地操作它包装的对象。