Решение с несколькими инкрементными переменными Javascript - PullRequest
0 голосов
/ 23 июня 2011

У меня есть переменная ver i = 1.

У меня есть следующая таблица:

<table>
<tr class="testrow">
<td class="prev">&nbsp;</td>
<td class="data">&nbsp;</td>
<td class="next">&nbsp;</td>
</tr>
<tr class="testrow">
<td class="prev">&nbsp;</td>
<td class="data">&nbsp;</td>
<td class="next">&nbsp;</td>
</tr>
<tr class="testrow">
<td class="prev">&nbsp;</td>
<td class="data">&nbsp;</td>
<td class="next">&nbsp;</td>
</tr>
<tr class="testrow">
<td class="prev">&nbsp;</td>
<td class="data">&nbsp;</td>
<td class="next">&nbsp;</td>
</tr class="testrow">
<tr>
<td class="prev">&nbsp;</td>
<td class="data">&nbsp;</td>
<td class="next">&nbsp;</td>
</tr>
</table>

В таблице может быть больше строк. Я хочу, чтобы переменная увеличивала значение на 1 при нажатии next и уменьшалась на 1 для prev. Это можно сделать легко. Но я хочу некоторую переменную, которая зависит от строки. Когда я нажимаю next в первой строке, значение переменной должно быть 2, но оно не должно меняться, когда я нажимаю next или prev в любой другой строке. Также это должно иметь место во всех других рядах. Минимальное значение переменной должно быть 1.

Будет полезно, если кто-нибудь предоставит мне скрипку с переменной, отображаемой в средней ячейке каждой строки. Обратите внимание, что в этой демонстрации это не должно быть что-то для ++ или -- текста или данных в средней ячейке.

Здесь моя скрипка ..

Заранее спасибо ..

Ответы [ 3 ]

1 голос
/ 23 июня 2011

Я бы использовал jQuery.data () , чтобы сохранить переменную в каждой строке, меняя ее, когда пользователь нажимает prev / next:

$(function() {

    $(".testrow").each(function() {
        var $row = $(this);
        // set the initial value  
        $row.data("currentIndex", 1);

        $row.find(".prev").click(function() {
            $row.data("currentIndex", $row.data("currentIndex") - 1);
            alert("currentIndex: "+$row.data("currentIndex"));
        });
        $row.find(".next").click(function() {
            $row.data("currentIndex", $row.data("currentIndex") + 1);
            alert("currentIndex: "+$row.data("currentIndex"));
        });

    });

});

jsFiddle: http://jsfiddle.net/5TPCK/12/

1 голос
/ 23 июня 2011
$('table tr .next').click(function() {
    alert($(this).closest('tr').index());
});

http://jsfiddle.net/ThiefMaster/5TPCK/2/

Кстати, </tr class="testrow"> ужасно неправильно - это должно быть только </tr>.

0 голосов
/ 23 июня 2011

Не могли бы вы сохранить массив этих счетчиков (это будет работать, если количество строк известно заранее и статично)?В противном случае вы можете прикрепить счетчик к каждому элементу <tr>, используя функцию jquery data().

См .: http://api.jquery.com/jQuery.data/

...