2013-03-21 85 views
0

我试图用jQuery来创建一个UI,它允许一对li元素添加在列表的末尾。第一对进行得很顺利,但随着附加对的添加,两个较早注入的元素(li.box)中的一个消失。只有一个li.box将永远留在页面上。我无法弄清楚为什么。什么是删除我的注入元素?

HTML

<ul id="ruleset" class="ruleset"> 
    <li class="rule""> 
     <div class="text">Rule </div> 
     <select name="join" class="join"> 
      <option value="+">+</option> 
      <option value="AND">AND</option> 
      <option value="OR">OR</option> 
     </select> 
    </li> 
</ul> 

的Javascript

$(document).ready(function(){ 
    var liBox=$('<li>').attr('class','box').text('>'); 
    $('body').on('change', 'select.join', function(){ 
     var copy=$(this).parent().clone(); 
     var li = $(this).parent(); 
     var par=li.parent(); 
     li.after(liBox); //an item between each rule to eventually contain controls 
     par.append(copy); //a copy of the rule item 
    }); 
}); 
+0

看,它的工作:http://jsfiddle.net/XxX9Q/ – RAS 2013-03-21 00:28:11

+0

你只是建立在页面加载一个元素,然后移动该在附近,所以这并不奇怪? – adeneo 2013-03-21 00:29:04

+1

'li.after(liBox.clone());' – generalhenry 2013-03-21 00:29:44

回答

2

的JQuery实际上不会克隆li.box而只是将其移动。因此您的代码应阅读:

li.after(liBox.clone()); 

小提琴:http://jsfiddle.net/yqXhM/1/

+1

有趣!你可以添加资源或链接到解释/文档? – powtac 2013-03-21 00:33:27

+0

真的有帮助。谢谢。 – gmdavisUX 2013-03-21 02:46:35