【发布时间】:2010-07-22 23:28:19
【问题描述】:
我正在尝试一种文本输入形式。所有输入都将采用有序列表 OL/LI 结构。 输入旁边会有一个 + 符号,当您单击它时,它应该创建一个子 OL 并使用另一个输入创建一个二级列表。如果再次单击它,它会添加另一个输入。新的输入也有 + 符号,你可以做同样的事情。从技术上讲,我只希望它深入三级,但我想我以后可以弄清楚这部分,但我真正想要的是如何实现这一点。
我有一个开始阶段,但它复制了太多的 LI,我不确定发生了什么。 这就是我所拥有的。
$('.add_sub_page').live('click',function(e){
$("<ol>").append($(this).parent().clone()).insertAfter(this);
e.preventDefault();
});
我提出了一个 IRC 聊天室,并为我提供了这个解决方案,但它与我的第一个解决方案存在相同的问题,所以我不确定它是否更容易使用,所以我会提供它也是。
$('.add_sub_page').live('click',function(e){
var ol = $("ol",this), new_ol = ol.length ? false : true;
ol = new_ol ? $("<ol>") : ol;
ol.append($(this).parent().clone());
if (new_ol) {
ol.insertAfter(this);
}
e.preventDefault();
});
这样您就可以看到我正在使用的 HTML...
<form id="sitemap" action="" method="post">
<ol>
<li class="page-title"><label>Page Name: </label><input type="text" name="pages[]" value=""><a class="add_sub_page">+</a></li>
<li class="page-title"><label>Page Name: </label><input type="text" name="pages[]" value=""><a class="add_sub_page">+</a></li>
<li class="page-title"><label>Page Name: </label><input type="text" name="pages[]" value=""><a class="add_sub_page">+</a></li>
<li class="page-title"><label>Page Name: </label><input type="text" name="pages[]" value=""><a class="add_sub_page">+</a></li>
<li class="page-title"><label>Page Name: </label><input type="text" name="pages[]" value=""><a class="add_sub_page">+</a></li>
</ol>
<p><input type="submit" name="submit_step1" value="Next Step"></p>
</form>
您可以在http://jsbin.com/everu3 预览问题——单击相同的加号 (+) 两次以查看问题。
感谢您提供的任何帮助!
【问题讨论】:
标签: jquery forms input clone appendto