Я немного смущен о том, как сделать это...
У меня есть таблица, которая имеет серию строк, и в каждой ячейке, существуют определенные элементы формы. Я пытаюсь получить значение от поля ввода "кода" от последней строки только и испытываю затруднения из-за синтаксиса...
Упрощенная таблица похожа на это:
<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;
});
}
Попробуйте следующее:
$('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
в свою собственную переменную в вашем случае, так как вы можете получить значение всего за одно объявление, как показано выше.