我正在尝试创建一个动态表,在整个使用过程中添加和删除行。我不想把id放在我后来想要引用的每个容器上。
例如,我想在动态添加的行的最后一个单元格中添加一个隐藏的输入。该行有一个id,当我在最后一个单元格上没有id时,如何使用dojo.place()?
var pmrCount = dojo.query("#pmhTable >tbody >tr").length;
var rowID = 'pmr_' + pmrCount;
var newPmrRow =
'<tr id="' + rowID + '">' +
'<td>' + pmh + '</td>' +
'<td>' + String(pmr.severity).charAt(0) + '</td>' +
'<td>' + pmr.customerName + '</td>' +
'<td>' + pmr.deviceType + '</td>' +
'<td>' + pmr.deviceModel + '</td>' +
'<td>' + pmr.deviceSerial + '</td>' +
'<td align="center"><a class="cancel-link"></a></td>' +
'</tr>';
//dojo.place(newPmrRow, dojo.query("#pmhTable >tbody"));
var newPmrHiddenInput =
'<input type="hidden" name="pmrs" value="'+ JSON.stringify(pmr)+ '">';
//dojo.query("#" + rowID + " td:last").place(newPmrHiddenInput);
这两行注释代码是我试图用功能代码替换的代码。这些不起作用,它们不像其他语法错误那样在错误控制台中显示任何警告。不知道从哪里开始。
我知道dojo.query()返回一个NodeList,而place()期待一个DOM节点或一个id。这样做的正确方法是什么?
答案 0 :(得分:1)
您想查看Nodelist的dojo/NodeList-dom扩展名。它允许您将NodeList中的每个元素放入基于查询选择器的元素中。在AMD Style中它看起来像:
require(['dojo/dom-construct', 'dojo/NodeList', 'dojo/NodeList-dom', 'dojo/domReady!'], function (domConstruct, NodeList) {
var nodes = new NodeList([domConstruct.toDom('<div>someContent</div>')]);
nodes.place('#x');
});
看着文档,我有点惊讶,没有一种更简单的方法可以做到这一点,所以也许有比这更好的方法。
答案 1 :(得分:0)
好吧,我发现两行代码似乎有效,但我不知道引用数组样式的NodeLists在技术上是否正确。这就是我所做的。
dojo.place(newPmrRow, dojo.query("#pmhTable >tbody")[0]);
dojo.place(newPmrHiddenInput, dojo.query("#" + rowID + "> td:last-child")[0]);