2011-03-21 41 views
0

因此,假設我在JQuery中選擇了一個單獨的DOM div。 我然後繼續創建一個新的DIV像這樣:JQuery DOM創建/處理問題

var DIV = $("<div>Hello, world</div>"); 

在那之後,我嘗試在DIV把原來的一個內像這樣:

$(OriginalDiv).append(DIV); 

好吧,這工作。 現在我想進一步編輯DIV。

調用.click,.html,.addClass,(可能更多)不起作用! 好的,我做的是:

var OriginalDiv = $("someSelector"); 
var DIV = $("<div>Hello, world</div>"); 
DIV = $(OriginalDiv).append(DIV); 

這似乎起初工作;但是,它將DIV設置爲引用與OriginalDiv相同的DOM對象,而不是新添加的DOM對象。當然,這不允許我編輯DIV。

所以,後來,我嘗試兩個方法:

var OriginalDiv = $("someSelector"); 
var DIV = $("<div>Hello, world</div>"); 
$(DIV).appendTo(OriginalDiv); 

var OriginalDiv = $("someSelector"); 
var DIV = $("<div>Hello, world</div>"); 
DIV = $(DIV).appendTo(OriginalDiv); 

甚至沒有這些工作。

如果我沒有做很好地解釋了,這裏是我的確切困境

我想創建jQuery的DOM對象,然後使用jquery其追加到另一個DOM對象。問題是,一旦它被追加,似乎沒有辦法直接訪問它,而不使用諸如.children之類的詞。

我非常想直接返回某處,並在那個過程中引用我正在追加的DOM對象。就像真正被追加的那個一樣。

我不知道如何在JQuery中做到這一點。任何人都知道解決方案?

感謝

--g

回答

1

是的,append將不起作用,因爲它會返回對新元素附加到的元素的引用。 jQuery的支持方法鏈,所以這應該輕鬆地工作:

$("<div>Hello, world</div>") 
.click(function() { 
    // something 
    }) 
.appendTo('someSelector'); 

但即使

var $ele = $("<div>Hello, world</div>").appendTo('someSelector'); 

會工作。 appendTo返回對附加元素的引用。如果這不適合你,你在其他地方有你的問題。


關於你的代碼的評論:這不是你的問題,但是重要的是你要知道這裏發生了什麼。

這部分

var OriginalDiv = $("someSelector"); 
var DIV = $("<div>Hello, world</div>"); 
$(DIV).appendTo(OriginalDiv); 

相同

$($("<div>Hello, world</div>")).appendTo($("someSelector")); 

你看,你有一個jQuery的嵌套調用,因爲DIV已經是一個jQuery對象。沒有必要再通過它到jQuery。

您也可以直接將選擇器傳遞給appendTo

0

你可以試試這個;

var DIV = document.createElement('div'); 

然後你可以使用;

$(div).html('Test!'); 

或者你想要使用什麼。

0

您不必從DOM中取回任何東西。一旦你用jQuery創建元素,你已經有了一個DOM元素的引用。將它插入到文檔中並沒有什麼特別之處。

// this will create the DOM element, and the jQuery 
// object wrapping that newly created DOM object 
// is assigned to DIV. 
var DIV = $("<div>Hello, world</div>"); 
// Don't worry about getting a return value from this 
// append() call. What we need is already available inside 
// the variable DIV. 
$(OriginalDiv).append(DIV); 

// continue using DIV as you normally would. It is referring 
// to the same DOM object that was just appended to the document. 
DIV.addClass('green');