Найти класс в строке таблицы - PullRequest
1 голос
/ 08 марта 2010

Посмотрите на эту таблицу:

<table cellpadding="0" cellspacing="0" class="order_form">
    <tr>
        <th>Amount</th>
        <th>Desc</th>
        <th>Price</th>
        <th>Total</th>
    </tr>
    <tr>
        <td><input type="text" class="order_count" /></td>
        <td>
            <span class="order_desc">Middagstallerken</span>
        </td>
        <td>
            <span class="order_price">1,15</span>
        </td>
        <td>
            <span class="order_each_total"></span>
        </td>
    </tr>
    [...]
</table>

После ввода суммы мне нужно выбрать класс "order_price" и умножить его на значение ввода "order_count" и поместить его в "order_each_count". У меня много этих строк, поэтому мне нужно найти следующий класс в строке.

Я пытался использовать такую ​​функцию, как эта, но безрезультатно:

<script type="text/javascript">
    $(document).ready(function(){
        $('.order_count').keyup(function() {
            var each_price = $(this).prevUntil("tr").find("span.order_price").text();
        });
     });
</script>

Надеюсь, у кого-то есть хорошее решение: -)

1 Ответ

2 голосов
/ 08 марта 2010

Используйте closest() вместо prevUntil:

$(document).ready(function(){
    $('.order_count').keyup(function() {
        var amount = parseInt($(this).val(), 10);
        var each_price = $(this)
                             .closest('tr')
                             .find('span.order_price')
                             .text()
                             .replace(',', '.'); // Floats use . as separator

        each_price  = parseFloat(each_price);
        total_price = amount * each_price;

        // Update the value
        $(this)
            .closest('tr')
            .find('span.order_each_total')
            .text(total_price
                .toFixed(2) // "Round" to two decimal places
                .replace('.', ',') // Format properly
            );
    });
 });

Не забудьте использовать parseFloat или parseInt при попытке использовать числа из DOM в расчетах & ndash; по умолчанию они являются строками.

...