使用JQUERY动态添加单选按钮,然后将jquery change事件连接到生成的单选按钮

时间:2010-03-15 13:18:02

标签: jquery

我正在使用下面的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更改函数,但它没有注册。如何让更新事件触发以更新我的隐藏输入

3 个答案:

答案 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']")