jQuery - получите значение поля ввода от последней строки в таблице?

Я немного смущен о том, как сделать это...

У меня есть таблица, которая имеет серию строк, и в каждой ячейке, существуют определенные элементы формы. Я пытаюсь получить значение от поля ввода "кода" от последней строки только и испытываю затруднения из-за синтаксиса...

Упрощенная таблица похожа на это:

<table id="table1">
<tr><td><input type="hidden" name="code" value="XFT" /></td></tr>
<tr><td><input type="hidden" name="code" value="ETY" /></td></tr>
<tr><td><input type="hidden" name="code" value="DHQ" /></td></tr>
</table>

И, вот jQuery, который не работает...

if($('#cont')) {
            $("#cont').live('click', function(event) {
                var tr = $('#wr-viewcarttable tr:last');
                var itemcode = $(tr > 'input[name="code"]').val();
                window.location = "/search?p="+itemcode;
            });
        }
6
задан Brian Tompsett - 汤莱恩 22 May 2017 в 08:08
поделиться

1 ответ

Попробуйте следующее:

$('table#table1 tr:last input[name=code]').val();

Или, с поправкой на ваш код:

$('#cont').live('click', function(event) {
    var tr = $('#wr-viewcarttable tr:last');
    var itemcode = tr.find('input[name=code]').val();
    window.location = "/search?p="+itemcode;
});

У вас есть две ошибки в вашем коде, у вас несоответствующие кавычки в $ ("# cont ') часть, и ваш входной поиск неверен. Теперь у вас есть:

$(tr > 'input[name="code"]').val();

Поскольку > находится вне кавычек, это не строка, а оператор сравнения, который теперь сравнивает tr to 'input [name = "code"]' . Операторы сравнения всегда возвращают логические значения (истина или ложь), поэтому вы эффективно делаете это:

$(true).val();

Что не означает ' t имеет много смысла. Если у вас есть объект jQuery, вы можете использовать метод find для поиска любых дочерних элементов этого объекта или, в качестве альтернативы, передать элемент в качестве контекста в $ () Таким образом, эти две функции будут работать и равны:

tr.find('input[name=code]').val();
$('input[name=code]', tr).val();

На самом деле нет причин сохранять tr в свою собственную переменную в вашем случае, так как вы можете получить значение всего за одно объявление, как показано выше.

12
ответ дан 9 December 2019 в 20:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: