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节点?

rancher2.6.3不能加入节点

相对于外部容器节点的大小,如何设置 Dojo TitlePane 的高度?

(略难)二叉查找树的删除

dojo在foreach中获取当前节点的父节点