我正在尝试一种文本输入形式。所有输入都将采用有序列表 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上预览问题——单击相同的加号 (+) 两次以查看问题。
感谢您的任何帮助,您可以提供!