2011-02-22 123 views
0

因此,我们在一个表列中使用带有两个锚标签的MVC3网格。 我们希望通过单击一行来获取第一个表格单元格中的锚定标记值。 我们在IE *中取得成功,但在Firefox和Chrome中无法使用。 这里是代码:JQuery只在IE中工作

$("#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这只作品!

+6

如果它只适用于IE浏览器,则会出现严重错误。它应该只**不**在IE中工作。 – 2011-02-22 18:13:20

回答

3

<a>标签没有价值属性,所以.val()不应该工作。

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

$(this).find('td:first a').text() 
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函数来检索任意元素属性的值。

+0

谢谢你的回复。但问题是,在锚标签我们有img。所以我们需要从锚标签中获取一些价值。 ​​​​q​​34​​Q12​​ Bojan 2011-02-22 18:42:04