JQuery只能在IE中找到工作

时间:2011-02-22 18:10:31

标签: jquery internet-explorer firefox find

因此,我们在一个表列中使用带有两个锚标记的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 !!!

2 个答案:

答案 0 :(得分:3)

<a>标记没有值属性,因此.val()不起作用。

尝试使用.text()代替(您可能需要$.trim())。

$(this).find('td:first a').text()

答案 1 :(得分:3)

val函数主要用于检索和设置表单元素的值。要获取/设置非表单标记的内容,请尝试使用texthtml函数

$("#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函数来检索任意元素属性的值。