使用JQuery:
有时,我可以做variable.val()
并且它有效。有时,我需要使用$(variable).val()
。
我希望能够在没有反复试验的情况下做出选择。
有人知道在使用JQuery时用$()
包装对象的时间吗?
答案 0 :(得分:15)
使用$()包装DOM对象会将其转换为jQuery Wrapped Set Element。这样你就可以用它来调用jQuery方法(val(),attr(),show(),hide(),serialize())。
但是,如果您需要获取或设置纯javascript属性,则不应将其包装。
答案 1 :(得分:6)
简单地说$(variable)
接受一个DOM元素并创建一个jQuery对象。在最终得到DOM对象而不是jQuery对象时,您需要使用它。
获得DOM对象的最可能原因是:
this
变量和所有事件参数都将引用DOM对象(而不是jQuery对象)。document.getElementById
(如果你有一些遗留的javascript,或者因某些原因引用了不是jQuery插件的第三方库)那么这些将是DOM对象,需要包装。如果$(variable)
已经是一个jQuery对象,那么调用variable
没有什么害处,超出了对可能根据你如何使用它假设它是一个DOM对象的人的混淆,你可以随时获得通过调用$(variable)[0]
返回DOM对象。
答案 2 :(得分:5)
有人知道在使用JQuery时用
$()
包装对象的时间吗?
要点:obj instanceof jQuery
返回false时。这通常是this
和方法参数的情况(除非记录该方法以使参数必须是jQuery对象)。
因此,如果您有一个this
并且想要拥有jQuery函数,那么您需要将其包装起来。 E.g。
function() {
$this = $(this);
$this.val();
}
此外,如果你有一个函数,其参数不一定是jQuery元素,并且你想确保它们是,那么你需要先包装它。 E.g。
function(e) {
e = $(e);
e.val();
}
重新包装jQuery元素没有坏处。
答案 3 :(得分:0)
在学习jQuery的开始,找出变量已经包装的时候通常是反复试验的。例如,在事件函数中,this-variable不是jQuery对象。另外,我认为重新封装jQuery对象并不危险。
我不认为这是你需要担心的事情,因为你很快就会发现什么时候包装,什么时候不能,因为你将来会编写更多的jQuery代码。
答案 4 :(得分:0)
如果你有一个事件处理程序然后得到val()你需要包装它,因为下面的elem
没有被包装,但你可以在下面的例子中做elem.value
。
$('#someid').bind('click', function(e) {
var elem = e.currentTarget;
}
如果没有使用选择器获取元素,则可能需要将其包装。
如果你真的需要它,你可以只有一个实用函数来返回一个包装元素,所以它总是被包装。
只需将任何元素传递给它,然后它就可以检查它是否是一个jquery对象,如果没有包装它,但它将始终返回包装版本。
答案 5 :(得分:0)
始终使用$(something)
(如果您打算在something
上使用jQuery方法)