【发布时间】:2022-02-05 00:47:28
【问题描述】:
我有这个函数,它在模式弹出窗口中创建一个表,并且该表是从从 ajax 调用传入的数组中的数据填充的。现在,单击模式弹出窗口中的按钮,我需要获取 item.TimedPathwayID 的值,该值已选中其单选按钮并将其添加到隐藏字段。
function PopulateTimedPathwaysTable(tblData) {
var tbody = $('#tblTimedPathways tbody');
$.map(tblData.d, function (item) {
tr = $('<tr></tr>');
tr.append('<td class="pathwayID">' + item.TimedPathwayID + '</td>');
tr.append('<td>' + item.TimedPathwayName + '</td>');
tr.append('<td><input type="radio" class="radioSelection" name="timedPathwaySelection"" />');
tbody.append(tr);
});
$('input[name=timedPathwaySelection]:first').attr('checked', true);}
}
我一直在摆弄这种事情,但没有任何乐趣,并且默认情况下会检查第一行中的单选按钮,因此如果用户只接受默认值而不点击,则它不能真正与点击事件相关联.那请问我该怎么做呢?
$('body').on('click', '.radioSelection', function () {
var $tbl = $('#tblTimedPathways tbody');
var $dataRow = $tbl.closest('tr');
var id = $dataRow.find('td').eq(0).html();
});
【问题讨论】:
-
@freedomn-m 好的,谢谢,但是如果没有点击事件并且只需要选中默认按钮的行中的 id 怎么办?
-
没有点击事件(所以没有
this),您可以使用$("[name=timedPathwaySelection]:checked")获取当前收音机,例如:jsfiddle.net/xnr0om9k -
@freedomn-m 不确定这是否有效?
-
那么您需要将无线电选择器与 .closest(tr) 和 .find(.pathwayID).text() 结合起来。您还需要确保在正确的时间调用它,即在 tbody.append 之后。
-
请注意,当你想返回一个数组时,你应该只使用
$.map——否则你应该使用.each。没有真正的原因,这就是$.each/$.map的用途。
标签: javascript jquery asp.net onclick radio-button