2

为什么当我单击表格行时,它会提醒该行数据属性为“未定义”吗?

$(document).on('click', 'tr', function() {

    alert($(this).data("recordId"))

});

这是PHP,它(成功)将变量fee_source_id作为数据属性传递到表行中

<table = "all_aifs">
<tr>
    <th><b>Invoice ID</b></th>
    <th><b>Company Name</b></th>
    <th><b>Invoice Date</b></th>
    <th><b>Link</b></th>
</tr>
<?php foreach($result as $index => $row) : ?>
<tr data-recordId="<?=$row[id];?>"
    class="<?=$row["match"] ? "match" : "";?>">
    <td><?php echo $row[id]; ?></td>
    <td><?php echo $row[company_name]; ?></td>
    <td><?php echo $row[invoice_date]; ?></td>
    <td></td>
</tr>

更新 感谢下面的评论,我发现上面的 JavaScript 代码中有一些错误,如下所示:

  1. 警报方法正在调用data元素而不是attr元素。
  2. attr方法的参数已更改为("data-recordId"). (注意:jQuery 知道忽略此参数的第一部分,因此data-没有作为参数包含在内。)
  3. 警报方法末尾缺少分号

更新了 jQuery(现在可以使用)

$(document).on('click', 'tr', function() {

    alert($(this).attr("data-recordID"));

});

问题

  • 我正在使用 jQuery 1.7.2,它支持$.on()并且应该也支持.data()等等,我原来使用该.data()方法的 positng 是否仍然有效?为什么它不起作用?
  • 不要将数据属性设置为“x”,因为它完全等于表格中每一行的第一列,(fee_source_id)我可以只使用表格每一行中的第一列/单元格而不是数据- 已通过的属性,以引用该记录?
4

1 回答 1

0

我正在使用 jQuery 1.7.2,它支持$.on()并且应该也支持.data()等等,我原来使用该.data()方法的 positng 是否仍然有效?为什么它不起作用?

如果您使用 访问数据属性.data您实际上是从 jQuery 的dataobject中读取数据,它恰好将 cameCased 键映射到连字符键 ( recordId -> record-id)。这意味着如果您将属性重命名为,则可以使用anddata-record-id获取它。看演示.data('record-id').data('recordId')

不要将数据属性设置为“x”,因为它完全等于表格中每一行的第一列,(fee_source_id)我可以只使用表格每一行中的第一列/单元格而不是数据- 已通过的属性,以引用该记录?

是的,您可以这样做(同一个演示中包含的示例):

$(document).on('click', 'tr', function() {
    var record_id = $(this).find('td:first-child').text();
    alert(record_id);
});
于 2013-01-08T01:28:55.733 回答