为什么当我点击表格行时,是否会将该行数据属性警告为“未定义”?
$(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代码中存在一些错误,如下所示:
data
元素而不是attr
元素。attr
方法的参数已更改为("data-recordId")
。 (注意:jQuery知道要忽略此参数的第一部分,因此,data-
未包含在参数中。)$(document).on('click', 'tr', function() {
alert($(this).attr("data-recordID"));
});
问题:
$.on()
的jQuery 1.7.2,并且还应该支持.data()
所以,如果我使用.data()
方法的原始positng仍然有效吗?为什么不起作用?fee_source_id
)我可以只使用每个中的第一列/单元格表的行而不是已传递的data-attribute,以引用该记录?答案 0 :(得分:0)
我正在使用支持
$.on()
的jQuery 1.7.2,并且还应支持.data()
,所以,如果我使用.data()
方法的原始positng仍然有效吗?为什么不起作用?
如果您使用.data
,you're actually reading from jQuery's data
object访问数据属性,恰好将cameCased键映射到带连字符的键(recordId -> record-id
)。这意味着如果您将属性重命名为data-record-id
,则可以使用.data('record-id')
和.data('recordId')
获取该属性。 See a demontration
不是将data-attribute设置为“x”,因为它完全等于表中每行的第一列,(
fee_source_id
)我可以只使用每个中的第一列/单元格表的行而不是已传递的data-attribute,以引用该记录?
是的,你可以这样做(例子包括在同一个demo中):
$(document).on('click', 'tr', function() {
var record_id = $(this).find('td:first-child').text();
alert(record_id);
});