0

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

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

<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

4 回答 4

2

很简单:

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

您还必须将值转换为数字,您可以使用parseIntor unary来执行此操作+

var newValue = parseInt(value, 10) + 1;
// or
var newValue = +value + 1;
于 2011-07-02T17:59:19.400 回答
1
var newValue = parseFloat($("#list1 li:last").children(".order_field").val())+1;

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

于 2011-07-02T17:56:26.027 回答
1
$("#list1 li:last input.order_field").val()

应该给你你正在寻找的价值。

于 2011-07-02T17:58:42.613 回答
1

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

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

它有什么作用?
- 选择最后一个li内部#list1ul。
- 在其中,找到具有类的元素order_field并返回其值。

要增加它,只需执行以下操作:

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

希望这可以帮助。干杯

于 2011-07-02T17:59:35.900 回答