2012-08-01 95 views
0

所以,我在這裏要做的是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

回答

1

不完全確定你對輸入部分做了什麼,但我認爲這是因爲你想在返回之後做些事情。這是我有:

<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

1

有警報之前返回,因此警報將永遠不會被執行:

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

好的,很酷。這仍然不能解釋爲什麼「替換之前」會觸發兩次。而第二次「替換之前」被觸發時,名稱的值將返回undefined。 – 2012-08-01 20:48:28

+0

這裏的想法是在該回報上有回報和回調,並有另一回報。我得到爲什麼我沒有得到第二次警報,但我仍然困惑,爲什麼其餘的它不按預期工作..我重新格式化我的代碼@PixMatch解釋,但我仍然希望我能找到這個方法不起作用的更好的答案。 – 2012-08-01 21:16:24

1

那麼,對於「取代後,」根本就沒有開火警告,因爲直接有一個return語句在它之前。

+0

好的,是的。但是對我來說最大的祕密就是爲什麼「更換前」會發射兩次。而第二次激發的名字的價值是未定義的。 – 2012-08-01 20:49:13