2013-06-02 41 views
2

jQuery的可變數目:jQuery的克隆格內容的時間

$('#partsOrderQty').blur(function(){ 

var rowCounter = $(this).val(); 

console.log(rowCounter); 

var toAddRow = $("#skidListings").children().clone(); 

for (var i=0; i<rowCounter; i++) { 

    $("#skidListings").append(toAddRow); 

    console.log("Ran Once Just Now"); 

} 

}); 

HTML:

<div id="skidListings"> 

     <input class="ConfirmQty" name="ConfirmQty" type="text" value="<?php echo $confirm;?>"/> 

     <input class="ConfirmDesc" name="ConfirmDesc" type="text" value="<?php echo $des[$final]; ?>"/> 

     <input class="ConfirmWeight" name="ConfirmWeight" type="text" value="<?php echo $ShipWeight[$final]*$confirm; ?>" /> 

     <input class="ConfirmClass" name="ConfirmClass" type="text" value="<?php echo $class[$final]; ?>"/> 

     <input class="ConfirmNMFC" name="ConfirmNMFC" type="text" value="<?php echo $NMFC[$final]; ?>"/> 

     <input class="ConfirmLength" name="ConfirmLength" type="text" value="<?php echo $length[$final]; ?>"/> 

     <input class="ConfirmWidth" name="ConfirmWidth" type="text" value="<?php echo $width[$final]; ?>" /> 

     <input class="ConfirmHeight" name="ConfirmHeight" type="text" value="<?php echo $height[$final]; ?>" /><br /> 

    </div> 

爲什麼這隻克隆一次,即使它打印控制檯消息的時間正確的金額是多少?我必須清除這些值嗎?該功能允許我手動指定不同於從數據庫中提取的數量的碎片。我明白我不能用ID來克隆東西,但是我選擇了孩子,但沒有一個人有ID。我需要保留這些類,如果我刪除了名字?這很重要嗎?

編輯:爲每個請求http://jsfiddle.net/NxSwA/

+0

只是好奇,如果你意識到並關心你的代碼和答案都會重複所有的內容?所以如果你第一次有1到addRow ...你會得到2 ...但是如果你再加1,你會得到4,然後是8等 – smerny

+0

說實話,我不指望我用戶不止一次地改變它(我只有兩個預期的用戶),但是之前我沒有做過這些事情,所以我會照顧相應的改變。 –

回答

2

變化的代碼

var toAddRow = $("#skidListings").children(); 
for (var i=0; i<rowCounter; i++) { 
    $("#skidListings").append(toAddRow.clone()); 
    console.log("Ran Once Just Now"); 
} 

這應該工作

更新#1:立信因爲這是從.append文檔以下內容:「如果以這種方式選擇的元素被插入到DOM中其他地方的單個位置,它將被移動到目標(未克隆)「(感謝下面評論中的@Felix King)

+0

我認爲每次使用都會破壞克隆。謝謝一堆,這工作! –

+0

@roasted,如果輸入5,它只會添加1. – smerny

+2

@Andy:從'.append'文檔中:*「如果以這種方式選擇的元素插入到DOM中其他位置的單個位置,它將被移入目標(未克隆)「*。 –

2

我相信這就是你要找的...一個問題(至少我認爲它是一個問題)是,如果我加2,我會得到3(如預期),但現在如果我加1我應該期望有4個對吧?相反,我將結束了6,因爲它是克隆的#skidListings

的全部內容我會包裝每個skidListing在div class=skidListing,然後只需複製它們的一個實例......最後很可能,它應該是這樣的:

http://jsfiddle.net/NxSwA/1/

$('#partsOrderQty').blur(function() { 
    var rowCounter = $(this).val(); 
    console.log(rowCounter); 
    var toAddRow = $("#skidListings").children(".skidListing").last(); 
    for (var i = 0; i < rowCounter; i++) { 
     $("#skidListings").append(toAddRow.clone()); 
     console.log("Ran Once Just Now"); 
    } 
}); 

HTML

<input type="text" id="partsOrderQty" /> 
<div id="skidListings"> 
    <div class="skidListing"> 
     <input class="ConfirmQty" name="ConfirmQty" type="text" value="<?php echo $confirm;?>" /> 
     <input class="ConfirmDesc" name="ConfirmDesc" type="text" value="<?php echo $des[$final]; ?>" /> 
     <input class="ConfirmWeight" name="ConfirmWeight" type="text" value="<?php echo $ShipWeight[$final]*$confirm; ?>" /> 
     <input class="ConfirmClass" name="ConfirmClass" type="text" value="<?php echo $class[$final]; ?>" /> 
     <input class="ConfirmNMFC" name="ConfirmNMFC" type="text" value="<?php echo $NMFC[$final]; ?>" /> 
     <input class="ConfirmLength" name="ConfirmLength" type="text" value="<?php echo $length[$final]; ?>" /> 
     <input class="ConfirmWidth" name="ConfirmWidth" type="text" value="<?php echo $width[$final]; ?>" /> 
     <input class="ConfirmHeight" name="ConfirmHeight" type="text" value="<?php echo $height[$final]; ?>" /> 
     <br /> 
    </div> 
</div> 

本通知...如果我加2我有3個...如果我加1,我會有4(不是6)。這也可以讓你有更多的控制每個skidListing儘可能CSS,在JS中收集數據,刪除一些,等等。

+0

我可以直接在blur函數外定義變量使它保持不變嗎? –

+0

想想吧,這是一個滑動計數,它的措辭,它將是行數的總數。我需要更改措辭或者添加一個這個班的比賽的支票。 –

+0

現在想出如何去除線條,從而繼續解決他人問題的趨勢。我想也許有一天我會成爲一名職業球員,並會預見這些事情。 –