因此,我们在一个表列中使用带有两个锚标记的MVC3网格。 我们希望通过单击一行来获取第一个表格单元格中的锚标记值。 我们在IE *中取得了成功,但在Firefox和Chrome中它不起作用。 这是代码:
$("#interestTypesGrid tbody tr").live("click", function (e) {
$("#SelectedInterestTypeID").val($(this).find('td:first a').val());
$.post(URLGetInterestRates, $("#FormMasterData").serialize(), function (data) { $("#pagedInterestRates").html(data); });
});
问题在于:
$(this).find('td:first a').val();
这只适用于IE !!!
答案 0 :(得分:3)
<a>
标记没有值属性,因此.val()
不起作用。
尝试使用.text()
代替(您可能需要$.trim()
)。
$(this).find('td:first a').text()
答案 1 :(得分:3)
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中测试了这个working sample。
<强>更新强>
您提供的示例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,你可以使用数据属性和jQuery中的data
函数,事实上,将属性放在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); });
});
使用此方法的另一个working sample。
所有标准都可以使用attr jquery函数来检索任意元素属性的值。