функция val
предназначена главным образом для получения и установки значения элементов формы.Чтобы получить / установить содержимое тега без формы, попробуйте использовать функции text или html
$("#interestTypesGrid tbody tr").live("click", function (e) {
$("#SelectedInterestTypeID").val($(this).find('td:first a').text());
$.post(URLGetInterestRates, $("#FormMasterData").serialize(), function (data) { $("#pagedInterestRates").html(data); });
});
В этом коде я предполагаю, что #SelectedInterestTypeID
- это элемент формы, если нет, то вы также должны изменить его на text
.
Я тестировал этот рабочий образец в IE и Chrome.
Обновление
Пример предоставленного вами образца HTML:
<tr>
<td>
<a href="/MasterData/ShowInterestTypeDetails?id=11" value="11">
<img src = "../../Content/img/icon_detail_16px.gif" alt="" />
</a>
</td>
<td>q</td>
<td>34</td>
<td>q12</td>
<td>
<a href="/MasterData/DeleteInterestType?id=11" value="11">
<img src = "../../Content/img/icon_delete_16px.gif" alt="" />
</a>
</td>
</tr>
value
не является допустимым атрибутом в HTML.Если вы ориентируетесь на HTML5, вы можете использовать атрибут данных и функцию data
из jQuery, фактически, вероятно, будет проще всего поместить атрибут в tr
:
<tr data-interestType='{"id":11}'>
Затем ваш javascript с использованием функции данных:
$("#interestTypesGrid tbody tr").live("click", function (e) {
$("#SelectedInterestTypeID").val($(this).data("interestType").id);
$.post(URLGetInterestRates, $("#FormMasterData").serialize(), function (data) { $("#pagedInterestRates").html(data); });
});
Другой рабочий образец с использованием этого метода.
Будь прокляты все стандарты, вы можете просто использовать attr jquery функция для получения значения любого произвольного атрибута элемента.