-1

だから私はこれをロードします:

 $('#categories').load("/Category/GetCats");

このコントローラーから

    public ActionResult GetCats()
    {
        var model = db.Cats
            .Where(c => c.user_id == 5);

        //var query = from c in db.Cats where c.user_id == 4 orderby c.catId select c;
        //var i = query.Count();
        //var results = query;

        return PartialView("_PartialGetCats", model);
    }

このビューをレンダリングするには

  @foreach (var item in Model)
  {

    <tr>

        <td data-id="@item.catId">@item.item_name</td>

    </tr>

   }

カテゴリは表示されますが、この機能は

     $('#categories tr').on("click", function () {
                var requestpage = "/Item/Partial?id=" + $(this).data("id");
                alert(requestpage);
                $.get(requestpage, function (result) {
                    $("#results").html(result);
                });

または他のjquery関数は$('#categories tr). ただし、認識し$('#categories')ます。これを削除しload()てハードドッキングしてテストしました

   $('#categories').html('<tr data-id="5"><td>new data</td></tr>');

そしてそれは動作します。どうしたの?

編集: 完全な Index.cshtml ビュー

   @{
ViewBag.Title = "Home Page";
}



 <div id="categories">
 </div>

 <div id="results">
 </div>
 <div id="descrip">

 </div>
4

2 に答える 2

1

イベント委任を使用するか、 jQuery のコールバックを使用する必要があります.load()

jQuery.load()コールバック メソッド:

HTML が DOM にあるまでクリック イベントを接続するのを待ちます。これが、.html()機能する関数を介して HTML をハードコードするときにon("click"、バインド先の要素を見つけることができるためです。代わりにこれを行います:

$('#categories').load("/Category/GetCats", function () {
    $('#categories tr').on("click", function () {
        var requestpage = "/Item/Partial?id=" + $(this).data("id");
        alert(requestpage);
        $.get(requestpage, function (result) {
            $("#results").html(result);
        });
    });
});

イベント委任方法:

これにより、次のように、イベントを既存または将来存在する可能性のあるコンテンツにバインドできます。

$('#categories').load("/Category/GetCats");

$("#categories").on("click", "tr", function(){
    var requestpage = "/Item/Partial?id=" + $(this).data("id");
    alert(requestpage);
    $.get(requestpage, function (result) {
        $("#results").html(result);
    });
});
于 2013-08-17T04:56:43.910 に答える