DOJO:如何更改已删除的节点和后续节点
Posted
技术标签:
【中文标题】DOJO:如何更改已删除的节点和后续节点【英文标题】:DOJO: how to change a dropped node and following nodes 【发布时间】:2012-02-12 12:22:34 【问题描述】:我有以下 html:
<form action="/Config.aspx/SDKHome/SaveSections" id="SaveSections" method="post">
<input name="[0].SchemaName" type="hidden" value="contactSection" />
<ul creator="attrCreator" data-dojo-type="dojo.dnd.Source" class="section container dojoDndSource"
style="list-style-type: none;">
<li class="dojoDndItem">
<input name="[0].DefinedAttributes[0].SchemaName" type="hidden" value="firstname" />
</li>
<li class="dojoDndItem">
<input name="[0].DefinedAttributes[1].SchemaName" type="hidden" value="jobtitle" />
</li>
</ul>
</form>
我想将此项目添加到列表中:
<li class="dojoDndItem">
<input name="[X].DefinedAttributes[Y].SchemaName" type="hidden" value="itemToAdd" />
</li>
如何替换 X 和 Y(并通过以下所有项目增加此值),以获得以下 html 作为结果:
<form action="/Config.aspx/SDKHome/SaveSections" id="SaveSections" method="post">
<input name="[0].SchemaName" type="hidden" value="contactSection" />
<ul creator="attrCreator" data-dojo-type="dojo.dnd.Source" class="section container dojoDndSource"
style="list-style-type: none;">
<li class="dojoDndItem">
<input name="[0].DefinedAttributes[0].SchemaName" type="hidden" value="firstname" />
</li>
<li class="dojoDndItem">
<input name="[0].DefinedAttributes[1].SchemaName" type="hidden" value="itemToAdd" />
</li>
<li class="dojoDndItem">
<input name="[0].DefinedAttributes[2].SchemaName" type="hidden" value="jobtitle" />
</li>
</ul>
</form>
【问题讨论】:
喜欢这篇文章,但在 for 循环中 ***.com/questions/1145208/… []中的数字很重要:( 您的数字和值是否有特定的数组?它们有什么关系? 它们是从 .NET MVC VIEW 文件动态生成的 对不起,我不知道这些文件是如何工作的...... 【参考方案1】:试试这个:
dojo.require("dojo.dnd.Source");
dojo.ready(function()
var ul = dojo.query("ul.section").pop();
var lastLiInput = dojo.query("ul li:last-child>input").pop();
var lastLiInputName = dojo.attr(lastLiInput, "name");
var X = 1 + parseInt(lastLiInputName.replace(/.*DefinedAttributes\[(\d+)\].*/, '$1'));
var newLi = dojo.create("li", class : "dojoDndItem" , ul);
dojo.create("input",
name : "[0].DefinedAttributes[" + X + "].SchemaName",
type : "hidden",
value : "otherValue"
, newLi);
);
不确定我使用的选择器是否适用于所有浏览器,但您明白了……正则表达式使用 dom 选择器获取每个 X 和 Y、递增并放置在正确的位置。只需将其适应您的 dnd 逻辑...
在此处查看演示,输入可见而不是隐藏:http://jsfiddle.net/psoares/FSCdW
【讨论】:
以上是关于DOJO:如何更改已删除的节点和后续节点的主要内容,如果未能解决你的问题,请参考以下文章
如何在给定row和col索引的情况下获取Dojo Grid单元的实际DOM节点?