2010-02-04 43 views
0

我試圖重新與jQuery下面的代碼:問題與jQuery相當於JavaScript的的createElement

 var node = document.createElement("div"); 
     node.innerHTML = "DynaColumn"; 
     node.className = "ui-state-default ui-corner-all"; 

     return node; 

這是我試圖去上班代碼:

return $("<div class='ui-state-default ui-corner-all'>DynaColumn</div>"); 

的首先似乎工作正常。我不知道爲什麼第二次不工作:

將使用這個返回值的對象調用它像這樣:

something.appendChild(theNode); 

回答

3

appendChild是一個DOM方法,所以需要給予一個DOM節點,而不是一個jQuery包裝(由$(...)和大多數其他jQuery方法返回)。

快速的方式來獲得包裹節點的是包含一個元素一個jQuery包裝的:

return $('<div class="ui-state-default ui-corner-all">DynaColumn</div>')[0]; 
+0

感謝,這正是我正在尋找。現在,jQuery包裝器概念對我來說更加清晰。 – Will 2010-02-04 21:55:54

0
var $div = $(document.createElement("div")); 
$div.html("DynaColumn"); 
$div.addClass("ui-state-default").addClass("ui-corner-all"); 
return $div; // or $(something).append($div); 
1

記住,jQuery的對象是各地的DOM對象的包裝。爲了讓dom對象脫離jQuery對象,使用get()函數。

return $('<div class="ui-state-default ui-corner-all">DynaColumn</div>').get(0); 
1

如果something是裸露的DOM元素,那麼你需要:

something.appendChild(theNode[0]); 

如果something是一個jQuery對象,那麼你需要:

something.append(theNode);