2011-07-02 7 views
0

私は新しい順序付けられていないリスト項目を追加する関数を持っています。私は、新しく作成されたリスト項目の要素の値の1つを、新しい項目のすぐ上のリスト項目の値に基づく値に設定したいと思います。例えば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> 

を私は新しいリスト項目を作成する機能を実行すると、私はその後、#1 order2の値が1ずつ増加させたいと

<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> 

は、私が取得する方法を見つける必要があります:私はそれは次のようになり、新しいリスト項目を作成した後に新しいリスト項目(つまり今持っているだろう#のorder3)は、例えば6に設定されます。 〜に最後のリストアイテムを作成し、クラス.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

関連する問題