Обход с помощью jQuery - PullRequest
0 голосов
/ 02 июля 2011

У меня есть функция, которая добавляет новый неупорядоченный элемент списка.Я хотел бы установить одно из значений элемента во вновь созданном элементе списка на значение, которое основано на значении элемента списка чуть выше нового.

Например, если у меня есть что-то вроде:

<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, а затем новый элемент списка (который теперь будетhave # 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 ]

2 голосов
/ 02 июля 2011

Это просто:

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

Вы также должны преобразовать значение в число, которое вы можете сделать, используя parseInt или одинарное +:

var newValue = parseInt(value, 10) + 1;
// or
var newValue = +value + 1;
1 голос
/ 02 июля 2011

Вы можете получить последнее значение следующим образом:

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

Что он делает?
- Выбирает последнее li внутри #list1 ul.
- Внутри него находитэлемент с классом order_field и возвращает его значение.

Чтобы увеличить его, просто выполните:

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

Надеюсь, это поможет.Приветствия

1 голос
/ 02 июля 2011
$("#list1 li:last input.order_field").val()

должно дать вам значение, которое вы ищете.

1 голос
/ 02 июля 2011
var newValue = parseFloat($("#list1 li:last").children(".order_field").val())+1;

Рабочий пример: http://jsfiddle.net/JBhdF/2/

...