2011-11-17 39 views
7

返回HTML所以,据我所知,如果我有使用获得(0)或.html()来使用jQuery

<div id="thing">OMG there's awesome stuff in here</div> 

,需要植物HTML别的地方,我可以选择使用方法:
$('#thing').html();$('#thing').get(0);

使用其中一个或另一个时是否存在更高的互联网标准?他们完全一样,对吗?

感谢您的帮助!

+0

只是为了澄清,您试图从其父节点中删除该元素,然后将其附加到DOM树中的其他地方,对吗? – abelito

+0

'.html()'序列化DOM结构,'get(0)'检索DOM参考。正如你所看到的,这两者完全不同。顺便说一句[应该避免DOM序列化](http://stackoverflow.com/questions/7392930/why-should-y-innerhtml-x-innerhtml-be-avoided)。 –

回答

7

.get(0)将为您提供jquery对象中的第一个元素,而不是其中的HTML。然后您需要获取html。如果您使用的是jQuery,请使用jquery。我看不到没有理由不使用.html()

+1

我是一个白痴,.html()让你获得innerHTML,.get(0)让你获得整个HTML元素。 – OldDrunkenSailor

+0

@JamesMontagne你说过,“如果你使用的是jQuery,使用jQuery,我没有理由不使用'.html()'”。但'.html()_is_ jQuery并且绝对有它的用途。我们真的不知道OP在这里想要什么。 – JAAulde

+0

@jaa是的,我做了...我的意思是使用'.html',为什么要使用'get'并获取dom元素。我并不是说不要使用'.html'。在重新阅读这个问题后,我将“一些html”表示为实际的html而不是元素,但它很可能是对术语的滥用,他可能想要移动dom元素,在这种情况下可能不是应该使用。 –

0

我只使用.html()和我为一家公司工作。我从来没有见过.get(0)用于这样的任何事情

14

他们完全一样的东西,对不对?

错误。 html方法以字符串形式返回所选元素的内容get方法返回元素本身作为对象。例如,我们有这样的元素:

<div id="example"> 
    <span>A child element</span> 
</div> 

方法将返回以下:

console.log($("#example").html()); //Prints "<span>A child element</span>" 
console.log($("#example").get(0)); //Prints an object 

你可以尝试为自己here

0

它们是完全不同的。 get方法返回一个DOM元素,而html()返回一个字符串。这看起来像你想要的HTML,以便使用html()

0

不,他们没有做同样的事情。

.html()返回表示内部 DOM结构包含了jQuery集合对象中的元素HTML字符串:“OMG有真棒东西在这里。”

.get(0)从集合返回第一个DOM元素对象,在这种情况下,标签型DIV的ID为“东西”,并与值子文本节点DOM节点“OMG有真棒东西在这里”

2

如果您想复制一些元素,请使用而不是使用html。这是克隆元素的非常低效的方式。有一个更好的方法,所谓的clone(有趣的是):

$('#thing').clone(true).removeProp('id').appendTo('#someOtherElement'); 

注意,我去掉id属性,它必须是唯一的。

2

这两件事情要做接近同样的事情(注:将.innerHTML你在你的问题有什么):

$('#thing').html(); 

$('#thing').get(0).innerHTML; 

首先创建一个jQuery对象,然后调用的.html()方法(它依次从.innerHTML属性获取HTML)。

第二个创建一个jQuery对象,然后从中获取第一个DOM元素并从中获取innerHTML属性。

一般来说,如果你已经有一个jQuery对象,然后使用.html()。如果您已经有DOM对象,则使用.innerHTML