0

特定のビューにMvcContribグリッドを追加しました。グリッドには、列データとともに、ラジオボタン列もあります。選択したラジオボタンクリックイベントを取得しようとしていますが、期待どおりに発生していません。実装の何が問題なのかわかりません。この問題を解決するための提案やコードスニペットをご覧ください。

    <%= Html.Grid(Model.Items)
        .Columns(column =>
                     {
                         column.For(x => x.Name)
                             .Named(Html.OrderBy(null, "DisplayRestaurantsList", "Group", ViewContext.RouteData.Values, "sortBy", "sortDir", true, Model.SortDirection, Model.SortBy, "restaurantname", "Restaurant"));
                         column.For(x => x.Contact.GetDisplayName())
                             .Named(Html.OrderBy(null, "DisplayRestaurantsList", "Restaurant", ViewContext.RouteData.Values, "sortBy", "sortDir", true, Model.SortDirection, Model.SortBy, "administrator", "Administrator"));
                         column.For(x => Html.ActionLink("Remove", "RemoveRestaurant", "Group", new { id = x.ID, GroupID=x.Group.ID }, null))
                            .DoNotEncode();
                         column.For(x => Html.RadioButton("defaultRastaurant",x.ID,(!x.Group.ID.Value.ToString().IsEmptyOrNull() && x.ID==x.Group.DefaultRestaurantID) ? true:false)).Named("default").DoNotEncode();
                     })
        .Attributes(@class => "table-1 gapmb40")
        .Empty("There are no restaurants that match your criteria.")
        .RowStart(row => string.Format("<tr{0}>", row.IsAlternate ? "style=\"background-color:#CCDDCC\"" : ""))

  %>

ラジオボタンをクリックするjQueryコードをクリックします。

$("input[type='radio']").click(function () {
               alert("kaustubh");
           });

また、次の1つを試してみました:

 $("input[name='defaultRastaurant']").change(function () {
           alert("kaustubh");               
                          });
4

1 に答える 1

1

イベント委任の問題のようです。イベント ハンドラーが関連付けられている場合、要素は DOM に存在しません。

これを試して

$("body").on("click"," input[type='radio']" ,function () {
       alert("kaustubh");
 }); 

ボディは、ラジオボタンが存在する非静的な親に置き換えることができます。

于 2012-10-16T05:46:28.343 に答える