2011-07-02 116 views
0

我有一個函數,添加一個新的無序列表項。我想將新創建的列表項中元素的值之一設置爲基於新項目上方列表項中的值的值。穿越jQuery

舉例來說,如果我有這樣的:

<form id="form" action=""> 

<ul id="list1" class="listing"> 

    <li id="input1" class="item"> 

     <input id="descr1" class="descr" type="text" value="" name="descr1" /> 
     <input id="group1" class="group" type="text" value="" name="group1" /> 
     <input id="order1" class="order_field" type="text" value="4" name="order1" /> 
     <input id="row1" class="checkbox" type="checkbox" value="1" name="select_row1" /> 

    </li> 

    <li id="input2" class="item"> 

     <input id="descr2" class="descr" type="text" value="" name="descr2" /> 
     <input id="group2" class="group" type="text" value="" name="group2" /> 
     <input id="order2" class="order_field" type="text" value="5" name="order2" /> 
     <input id="row2" class="checkbox" type="checkbox" value="2" name="select_row2" /> 

    </li> 

</ul> 

如果我運行,創建一個新的列表項的功能,我想在#order2值由1,然後遞增新列表項(即現在有#order3)將被設置爲6。例如,我創建了新的列表項,將這個樣子後:

<li id="input3" class="item"> 

     <input id="descr3" class="descr" type="text" value="" name="descr3" /> 
     <input id="group3" class="group" type="text" value="" name="group3" /> 
     <input id="order3" class="order_field" type="text" value="6" name="order3" /> 
     <input id="row3" class="checkbox" type="checkbox" value="3" name="select_row3" /> 

    </li> 

我需要找到一種方式來獲得到了最後一個列表項並獲取類.order_field的值,然後在創建新列表項時使用該值(+1)。我的問題是我不知道如何把選擇器放到最後列表項的.order_field值。

我希望這是有道理的。

感謝, 肖恩

回答

2

它只是:

var value = $('#list1 li:last .order_field').val(); 

您還可以將值轉換爲數字,你可以使用parseInt或一元+做:

var newValue = parseInt(value, 10) + 1; 
// or 
var newValue = +value + 1; 
+0

+1我測試了你的代碼,它的工作原理。 –

+0

我對這個問題有很多很好的回答。對此,我真的非常感激。我使用了這個,因爲它在我的代碼中似乎有點乾淨和「可讀」。謝謝! – shawnzizzo

1
var newValue = parseFloat($("#list1 li:last").children(".order_field").val())+1; 

工作例如:http://jsfiddle.net/JBhdF/2/

+0

感謝您的回答。我感謝你抽出時間。 – shawnzizzo

1
$("#list1 li:last input.order_field").val() 

應該給你,你要尋找的價值。

+0

+1我測試了你的代碼,它工作。 –

1

可以檢索與此的最後一個值:

var last_value = $("#list1 li:last").find(".order_field").val(); 

它是做什麼的?
- 選擇#list1 ul中的最後一個li
- 在裏面找到類order_field的元素並返回它的值。

要增加它,只是做:

var new_value = parseInt(last_value, 10) + 1; 

希望這有助於。乾杯

+0

+1我測試了你的代碼,它工作。 –

+0

感謝您的回覆。我讚賞解釋。 – shawnzizzo