我想了解一下jQuery对象和DOM元素之间的关系。
当jQuery返回一个元素时,它在警告中显示为[object Object]
。当getElementByID
返回一个元素时,它显示为[object HTMLDivElement]
。这到底是什么意思?我的意思是,它们都是有区别的物体吗?
还有什么方法可以对jQuery对象和DOM元素进行操作?单个jQuery对象可以表示多个DOM元素吗?
发布于 2011-08-08 01:58:47
使用jQuery获取DOM元素时,jQuery对象返回的内容包含对该元素的引用。当您使用像getElementById
这样的本机函数时,您将直接获得对元素的引用,而不是包含在jQuery对象中。
jQuery对象是一个类似数组的对象,它可以包含多个DOM元素:
var jQueryCollection = $("div"); //Contains all div elements in DOM
上面的代码行可以在没有jQuery的情况下执行:
var normalCollection = document.getElementsByTagName("div");
实际上,当您传入一个简单的选择器(如div
)时,这正是jQuery在内部所做的事情。您可以使用get
方法访问jQuery集合中的实际元素:
var div1 = jQueryCollection.get(0); //Gets the first element in the collection
如果在jQuery对象中有一个或一组元素,则可以使用jQuery应用编程接口中提供的任何方法,而如果有原始元素,则只能使用本机JavaScript方法。
发布于 2011-08-08 02:10:01
上个月我才刚刚开始玩jQuery,我也有一个类似的问题在我的脑海中浮现。到目前为止,你收到的所有答案都是正确的,但一个非常准确的答案可能是:
假设您在一个函数中,要引用调用元素,您可以使用this
或$(this)
;但是有什么区别呢?事实证明,当您使用$(this)
时,您将this
包装在一个jQuery对象中。这样做的好处是,一旦对象成为jQuery对象,就可以在其上使用所有的jQuery函数。
它非常强大,因为您甚至可以将元素的字符串表示var s = '<div>hello <a href='#'>world</a></div><span>!</span>'
包装在jQuery对象中,只需将其包装在$():$(s)
中即可。现在,您可以使用jQuery操作所有这些元素。
https://stackoverflow.com/questions/6974582
复制相似问题