从jQuery对象中获取原生DOM元素?

17

如何让jQuery返回其封装的本地DOM元素?


1
除了“操作元素”之外,你还会用jQuery选择器做什么?我的意思是,你的问题基本上是:“我可以使用jQuery吗?”答案是:“可以”。 - Pointy
你为什么想要这样做?不过,你的表达式是行不通的,因为$("cheese_tag")会返回一个jQuery对象。 - alexn
抱歉,更好的表达我的问题应该是“我能将jQuery对象转换为普通JavaScript可以操作的对象吗?”即让jQuery返回一个JavaScript对象以供操作。 - mattsven
这个问题对我来说没有意义...为什么要使用普通选择器,当jQuery更简短、更快? - ant
有时候使用本地的JavaScript函数来获取对象可能会变得相当冗长,因此使用jQuery来获取对象比JavaScript更快。但实际上调用JavaScript函数比jQuery更快,因为在调用自己的几个函数之后,jQuery会调用相同的函数。这意味着在jQuery选择元素时使用纯JavaScript会比完整的jQuery更快,并且在某些情况下编写起来也同样容易。 - eragon2262
6个回答

33

当使用jQuery查找元素时,可以使用"get"函数获取它们:

var regularElement = $('#myElementId').get(0);

在 ".each()" 函数内部,"this" 指针指向一个 "真实" 的元素:

$('input.special').each(function() {
  var type = this.type;
  this.value = "exploding balloon";
  // etc
})

使用jQuery并不会使JavaScript“变得不同”。它就是JavaScript,而DOM仍然是DOM。


1
我花了一分钟才明白为什么你在jquery对象上使用get()函数,但是后来我读了问题本身的评论。现在我明白了。当与非jQuery JavaScript集成时,我可以看到get()很有用。 - Wally Lawless

2

$('myTag').get(0) 返回 HTML 元素。


2

jQuery使用Sizzle选择器引擎*。你也可以单独使用它。

*由Doug Neiner确认,这意味着它是正确的;)


1
没错!只需引入sizzle.js,然后添加这行代码:window.$ = window.Sizzle。而 $("cheese_tag") 将返回 [<domelement>]$("#cheese_id")[0] === document.getElementById("cheese_id") - Doug Neiner
什么,没有“我是Doug Neiner,我批准这个答案”吗?嘿嘿。 - Sampson
4
我是Doug Neiner,我批准这个答案。 - Doug Neiner

1
根据jQuery文档,有两种方法:
方法一
$("#ID-DOM-Element")[0]

方式 #2
$("#ID-DOM-Element").get(0)

jQuery文档中提到的一个重要细节方式1比方式2更快


0

我猜你想检查你的jQuery对象是否是"cheese_tag"的第一个实例。你可以使用:first选择器找到第一个标签,这样就不需要进行比较了。例如,获取第一个div标签的方法是:$('div:first')

有关完整的jQuery选择器列表,请参见文档


不完全是...我想要得到一个JavaScript HTML元素对象作为返回。 - mattsven

0

其他人已经直接回答了这个问题。 使用get()方法。

然而,大多数情况下,您希望使用jQuery方法进行操作,而不是访问原始DOM元素,然后使用“标准”JavaScript进行修改。

例如,使用jQuery,您只需说$('mySelector').addClass('myClass')即可向DOM元素添加CSS类。 直接使用DOM操作要复杂得多(并且特定于浏览器)。 这个概念延伸到几乎所有其他DOM操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接