2013-10-09 48 views
0

父元素內創建元素我可以創建一個div體內像這樣:在道場

var n = dojo.create("div", { innerHTML: "<p>helloWorld</p>" }, dojo.body()); 

我想創建一個div我的父元素裏面像這樣:

<div id="parent"></div> 

我都試過,但它似乎不工作:

var n = dojo.create("div", { innerHTML: "<p>helloWorld</p>" }, dojo.query('#parent')); 

哪有我在我的父母div裏面創建了我的div,它已經存在於DOM中?

回答

1

您發佈的解決方案是完全有效的。幾個選擇:

無需查找的DOM節點,你可以在一個字符串傳遞(節點的ID)

require(["dojo/dom-construct"], function(domConstruct){ 
    var n = domConstruct.create("div", { innerHTML: "<p>helloWorld</p>" }, 'parent'); 
}); 

或者你可以構造節點,然後再使用domConstruct放置#place:

require(["dojo/dom-construct"], function(domConstruct){ 
    var n = domConstruct.create("div", { innerHTML: "<p>helloWorld</p>" }); 
    domConstruct.place(n, 'parent'); 
}); 

domConstruct#place還可以帶一個可選的position參數。該API Docs有更多的信息,它

+0

這很有趣,謝謝。 – user1477388

0

的方式我也正是這(我願意接受任何其他的解決方案):

// dojo 1.7+ (AMD) 
require(["dojo/dom-construct"], function(domConstruct){ 
    var n = domConstruct.create("div", { innerHTML: "<p>helloWorld</p>" }, dojo.byId('parent')); 
}); 

// dojo < 1.7 
var n = dojo.create("div", { innerHTML: "<p>helloWorld</p>" }, dojo.byId('parent')); 
1

你應該需要針對一類,而不是一個元素的ID,我發現下面是有效的,易於維護的方法:

require([ 
    'dojo/query', 
    'dojo/dom-construct' 
    ], function(
    query, 
    domConstruct, 
){ 
    var parent = query('.someClass')[0]; 
    var child = domConstruct.create('div', { innerHTML: '<p>helloWorld</p>'}); 
    domConstruct.place(child, parent, 'position'); 
}); 

由於它始終是更好目標是一個id而不是一個班級,但是在你依賴外部圖書館的情況下並不總是可行的。