我正在使用下面的jQuery向我的页面添加单选按钮集合
$(document).ready(function() {
$("#Search").click(function() {
var keyword = $('#keyWord').val();
var EntityType = $("#lstEntityTypes :selected").text();
var postData = { type: EntityType, keyWord: keyword };
// alert(postData.VehicleType);
$.post('/EntityLink/GetJsonEntitySearchResults', postData, function(GRdata) {
var grid = '<table><tr><td>ID</td><td>Name</td><td></td>';
for (var i = 0; i < GRdata.length; i++) {
grid += '<tr><td>';
grid += GRdata[i].ID;
grid += '</td><td>';
grid += GRdata[i].EntityName;
grid += '</td><td>';
grid += '<input type="radio" name="EntitiesRadio" value="' + GRdata[i].ID + '" />';
grid += '</td></tr>';
}
grid += '</table>';
alert(grid);
$("#EntitySearchResults").html(grid);
$("EntitiesRadio").change(function() {
alert($("EntitiesRadio :checked").val());
$("EntityID").val($("EntitiesRadio :checked").val());
alert($("EntityID").val());
$("EntityName").val($("#lstEntityTypes :selected").text());
});
});
});
//
});
所以当页面加载时没有EntitiesRadio名称范围,所以我试图在同一个搜索点击方法中注册entitiesRadio更改函数,但它没有注册。如何让更新事件触发以更新我的隐藏输入
答案 0 :(得分:9)
您可以使用实时事件,该事件将自动用于页面上任何新创建的元素 http://api.jquery.com/live/
因此,您只需添加以下代码一次,它将应用于所有新创建的元素:
$(".EntitiesRadio").live('change', function() {
alert($(".EntitiesRadio :checked").val());
$("#EntityID").val($(".EntitiesRadio :checked").val());
alert($("#EntityID").val());
$("#EntityName").val($("#lstEntityTypes :selected").text());
});
还要确保添加“。”在通过ID调用之前通过类名和“#”进行调用之前,因为您在代码中错过了这个接口。
答案 1 :(得分:1)
$("EntitiesRadio")
将找不到任何内容,因为没有此类标记。如果要按ID选择,请使用$(“#EntitiesRadio”)或按类选择$(“。EntitiesRadio”)。
将HTML添加到页面后,您可以将更改事件绑定到该页面。要使更改事件自动绑定到新的匹配元素,您可以使用live API。
$(".EntitiesRadio").live('change', function() {} );
答案 2 :(得分:0)
只是一个观察,但$(“EntitiesRadio”)。可能更好的是$(“。EntitiesRadio”)?如果它们是类,则需要为$(“。EntitiesRadio”)而不是name =“EntitiesRadio”使用class =“EntitiesRadio”
如果你想使用name =“EntitiesRadio”,你将不得不使用
$("input[name*='EntitiesRadio']")