2012-11-20 52 views
14

我测试jQuery的.append VS使用下面的代码.appendTo方法:jQuery的:追加VS appendTo

$('div/>',{ 
    id : id, 
    text : $(this).text() 
    }).appendTo('div[type|="item"]#'+id); 
$('div[type|="item"]#'+id).append($(this).text()); 

注意的是,选择在.appendTo和.append,但后者的作品(在相同的是相同的页面),而前者不。为什么?如何获得.appendTo以使用这种类型的(复杂)选择器?这两种方法的内插是不同的吗?是否有一些我失踪的语法?

我不想让杂乱无章的代码混乱 - 足以说明选择器引用的元素存在,就像.append方法所证明的那样产生所需的结果 - 让我知道是否需要更多信息。

谢谢!

+0

另一点是,你尝试在第一种情况下追加与其容器相同的ID的div ... –

+0

是的 - 我不打算使用ID作为唯一标识符;既然如此,为什么这是一个坏主意? – Yevgeniy

+1

嗡嗡声:这是一个不好的做法,因为它被设计为独一无二的,并且在某些情况下,某些浏览器可能会发生错误。你可以看看[W3C网站](http://www.w3.org/TR/CSS2/selector.html#id-selectors)。 –

回答

21

要回答这个问题,你没有一个元素appendTo任何东西,因为你缺少字符

$('div/>',{}); 

需求是

$('<div/>',{}); 

创建一个元素,否则它的确如你所说的那样,没有任何东西!


否则,你似乎有正确的事情的顺序,是这样的:

.append()插入在匹配的元素集合的参数所指定的内容,每个元素的结束,如

$(Append_To_This).append(The_Content_Given_Here); 

.appendTo()作品周围的其他方法,将其插入在所述一组匹配的元素,以在参数给出的目标的端部的每一个元素,如在

$(The_Content_Given_Here).appendTo(Append_To_This); 

还有.prepend()prependTo()其工作原理完全一样,唯一的区别是预谋元素在内容,而不是最终目标元素开始时加入。

+0

男孩我感到愚蠢。感谢您的回应! – Yevgeniy

21

append将参数追加到您正在处理的对象上。

appendTo将正在处理的对象附加到参数。

此处了解详情:http://api.jquery.com/appendTo/

不谈,这里存在一些错误:

$('div/>', 

这不是任何选择。

1

$('#someDiv').append(someStuff); someStuff.appendTo($('someDiv')); //相同的结果,在这里,只是不同的方式取决于你Sitch为

0

两种方法都执行相同的任务去做。主要的区别是 -

  • 在语法而言,
  • 在内容和目标的位置。

对于.append(),方法之前的选择器表达式是插入内容的容器。

另一方面,与.appendTo()相反,内容位于方法之前,既可以作为选择器表达式,也可以作为动态创建的标记,并插入到目标容器中。

1

.append()方法将指定的内容作为jQuery的 集合中的每个元素的最后一个子(要插入它作为第一子,使用.prepend())。

.append().appendTo()方法执行相同的任务。主要区别在于语法上,内容和目标的位置中有 。使用.append(),该方法之前的选择器表达式 是内容被插入其中的容器。用.appendTo(),在 另一方面,内容在方法之前,或者作为选择器表达式或作为在飞行中创建的标记,并且它被插入到目标容器中。

3

我面临类似的查询和研究得到了更多的见解。听到目标,元素等是令人困惑的,我更愿意将外部选择器可视化为$ container和元素添加为$ widget。用简单的英文,我想添加小部件到容器。 append和appendTo都可以按照以下方式使用,并得到完全相同的结果。

$container = $("#containerdiv");

$widget = $("<div> <h1 id='title'> widget </h1> </div>")

方法1:$container.append($widget)

方法2:$widget.appendTo($container)

的主要区别是被返回了什么。在第一种情况下,返回$ container,在第二种情况下返回$ widget。如果您使用另一个jquery语句链接请求,这将会很有用。如果您想使用$ container,请使用第一个构造并使用小部件,使用第二种方法。例如,

,如果你想2级的小部件添加到容器,你会给

$container.append($widget1).append($widget2)

,如果你想添加的窗口小部件,然后小部件的标题说“酷小部件”,你会给

$widget.appendTo($container).find('#title').text("Cool Widget")

0

为了使这两更容易理解。

假设我有A B C三个有序的宪章。

一个appendç意味着A之前MOVE C,这将导致C'S reloaction但不 A,所以我们必须C A B

一个appendTOç意味着MOVE A C后,这个结果搬迁,但不 C,所以我们必须B C A

  • 两者的append和“appendTo”有甲和丙的结果相同,但 三个章程修改整个秩序。
  • 由于OOO.appendTo(XXX)的重新定位,XXX应该在此控件之前存在。