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'));

如何在 DOM 中已经存在的div父级内部创建我的内部?div

4

3 回答 3

1

您发布的解决方案是完全有效的。几个选择:

不用查找dom节点,传入一个String即可(节点的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有更多关于它的信息

于 2013-10-10T12:25:01.117 回答
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 而不是类为目标总是更好,但在您依赖并不总是可行的外部库的情况下。

于 2016-11-28T20:06:07.513 回答
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'));
于 2013-10-09T16:58:51.713 回答