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;
});
不完全确定你对输入部分做了什么,但我认为这是因为你想在返回之后做些事情。这是我有:
<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>
谢谢,Pix。我不确定为什么我的问题得到了重复,但是这个结果很好,除了我的编辑外。也应该为其他人派上用场! – 2012-08-01 21:13:17
有警报之前返回,因此警报将永远不会被执行:
{
return Number(n) + 1;
alert(name +' after replace');
});
好的,很酷。这仍然不能解释为什么“替换之前”会触发两次。而第二次“替换之前”被触发时,名称的值将返回undefined。 – 2012-08-01 20:48:28
这里的想法是在该回报上有回报和回调,并有另一回报。我得到为什么我没有得到第二次警报,但我仍然困惑,为什么其余的它不按预期工作..我重新格式化我的代码@PixMatch解释,但我仍然希望我能找到这个方法不起作用的更好的答案。 – 2012-08-01 21:16:24
那么,对于“取代后,”根本就没有开火警告,因为直接有一个return语句在它之前。
好的,是的。但是对我来说最大的秘密就是为什么“更换前”会发射两次。而第二次激发的名字的价值是未定义的。 – 2012-08-01 20:49:13
不需要在field.insertAfter之前分号? – 2012-08-01 19:36:53
是的,但它对结果没有影响。 – 2012-08-01 21:14:42