jQuery添加项目

问题描述:

所以,我在这里要做的是onClick添加另一个<li>,它完全像它上面那个。我在PHP中创建了一个for循环,在<li>内部创建适当的字段。jQuery添加项目

我正在运行的问题是:当您单击.repatable-add按钮时,我收到两次“更换前”警报,并且“更换后”警报根本没有启动。 和想法?

jQuery('.repeatable-add').click(function() { 
    field = jQuery(this).siblings('ul.image-details').find('li:last').clone(true); 
    fieldLocation = jQuery(this).siblings('ul.image-details').find('li:last'); 
    jQuery('input', field).val('').attr('name', function(index, name) { 
      alert(name +' before replace'); 
      return name.replace(/(\d+)/, function(fullMatch, n) { 
      return Number(n) + 1; 
      alert(name +' after replace'); 
     }); 
    }) 
    field.insertAfter(fieldLocation, jQuery(this).siblings('ul.image-details').find('li:last')) 
    return false; 
}); 
+0

不需要在field.insertAfter之前分号? – 2012-08-01 19:36:53

+0

是的,但它对结果没有影响。 – 2012-08-01 21:14:42

不完全确定你对输入部分做了什么,但我认为这是因为你想在返回之后做些事情。这是我有:

<script type="text/javascript"> 
jQuery(document).ready(function(){ 
    jQuery('.repeatable-add').click(function(){ 
      var copyThis = jQuery(".image-details").find("li:last").clone(true); 
      jQuery(".image-details").append(copyThis); 
      var name = jQuery("input").attr("name"); 
      var count = name.replace(/\d+/, ''); 
      var newCount = count++; 
      jQuery("input").attr("name",name.replace(newCount.toString(),count.toString())); 
     return false; 
    }); 
}); 
</script> 

<ul class="image-details"> 
    <li>1</li> 
    <li>2</li> 
    <li>3</li> 
    <li>4</li> 
</ul> 
<input name="ithas1" /> 
<button class='repeatable-add'>button</button> 
+0

谢谢,Pix。我不确定为什么我的问题得到了重复,但是这个结果很好,除了我的编辑外。也应该为其他人派上用场! – 2012-08-01 21:13:17

有警报之前返回,因此警报将永远不会被执行:

{ 
      return Number(n) + 1; 
      alert(name +' after replace'); 
     }); 
+0

好的,很酷。这仍然不能解释为什么“替换之前”会触发两次。而第二次“替换之前”被触发时,名称的值将返回undefined。 – 2012-08-01 20:48:28

+0

这里的想法是在该回报上有回报和回调,并有另一回报。我得到为什么我没有得到第二次警报,但我仍然困惑,为什么其余的它不按预期工作..我重新格式化我的代码@PixMatch解释,但我仍然希望我能找到这个方法不起作用的更好的答案。 – 2012-08-01 21:16:24

那么,对于“取代后,”根本就没有开火警告,因为直接有一个return语句在它之前。

+0

好的,是的。但是对我来说最大的秘密就是为什么“更换前”会发射两次。而第二次激发的名字的价值是未定义的。 – 2012-08-01 20:49:13