遍历jQuery

时间:2011-07-02 17:53:31

标签: jquery jquery-traversing

我有一个添加新的无序列表项的函数。我想将新创建的列表项中的一个元素值设置为基于新列表项上方的值的值。

例如,如果我有类似的东西:

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

我希望这是有道理的。

谢谢, 肖恩

4 个答案:

答案 0 :(得分:2)

这很简单:

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

您还必须将值转换为数字,您可以使用parseInt或一元+来执行此操作:

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

应该为您提供您正在寻找的价值。

答案 3 :(得分:1)

您可以使用以下方法检索最后一个值:

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

它做什么?
- 选择li ul。中的最后#list1 - 在其中,找到具有类order_field的元素并返回其值。

要增加它,只需执行:

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

希望这会有所帮助。干杯