2012-11-20 81 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應該在此控件之前存在。