2011-07-02 118 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