0

div を ajax 結果データにバインドしました。コンテンツをバインドした後は機能しません。ページ読み込みビュー機能の間、コントロールは機能しています。しかし、ajax を使用してコードを div に追加した後、入力された div でコントロールを使用してもスクリプトは実行されません。div の外側のコントロールはスクリプトで動作しています。

私はmvc 2を使用しています。これについて助けてください。

ajax コード

 function Operation(ActionResult, mod,discid) {
            $.ajax({
                type: 'Get',
                url: ActionResult,
                data: { strDiscId: discid, PageNum: $("#hdnPagenum").val(), PageCount: $("#hdnPageCount").val(), 
                        strSearchType: $("#hidSort").val(),strSearchText:  $("#hidSearchText").val() },
                success: function (data) {
                    flag = true;
                        if (mod == "view") {

                            $("#taBody").val(data);
                        }
                        else {
                            $("#divContactsChecks").html(data);
                        }
                }
            });
        }
    });
        $("#liTitle").click(function () {
            $("#hidSort").val('TS'); //Title Sort
            Operation('LoadDisclaimers', 'Load',0);
        });

サーバー側コード

public string LoadDisclaimers(string strDiscId, string PageNum, string PageCount,string, strSearchType,string strSearchText)
    {
        string strTable = "";
        AdminModel objModel = new AdminModel();
        DataTable dtDisc = new DataTable();

        string strOrderBy = "";
        switch (strSearchType)
        {
            case "TS": strOrderBy = "[name]"; break;
            case "US": strOrderBy = "date_updated"; break;
            case "CS": strOrderBy = "date_created"; break;
            case "TSD": strOrderBy = "[name] desc"; break;
            case "USD": strOrderBy = "date_updated desc"; break;
            case "CSD": strOrderBy = "date_created desc"; break;
            default: strOrderBy = "[name]"; break;
        }
        using (dtDisc = objModel.GetDisclaimer(strOrderBy, Convert.ToInt16(PageNum), Convert.ToInt16(PageCount), strSearchText))
        {
            for (int i = 0; i < dtDisc.Rows.Count; i++)
            {
                string strId = dtDisc.Rows[i]["disc_id"].ToString();
                strTable += "<div class='border-bottom-line gm-pad-tb-12'>";
                strTable += "<span class='display-ib-top'><input id='ipCheck" + strId + "' type='checkbox' value='" + strId + "' class='default-checkbox' />";
                strTable += "<label for='ipCheck" + strId + "'></label></span>";
                strTable += "<div class='display-ib-top m-left25 span-45-p'>";
                strTable += "<div><span id=spTitle_" + strId + " class='blue-h1 font-arial-18'>" + dtDisc.Rows[i]["name"].ToString() + "</span></div>";
                strTable += "<div><span class='font-arial-14 display-ib-middle'>Created on : </span>";
                strTable += "<span class='display-ib-middle adm-disable font-arial-12'>" + dtDisc.Rows[i]["date_created"].ToString() + "</span></div>";
                strTable += "<div><span class='font-arial-14 display-ib-middle'>Modified on : </span>";
                strTable += "<span class='display-ib-middle adm-disable font-arial-12'>" + dtDisc.Rows[i]["date_updated"].ToString() + "</span></div>";
                strTable += "</div><div class='display-ib-middle rgt'>";
                strTable += "<span id=spViewDisc_" + strId + " class='display-ib-middle light-grey-btn large-btn'>View Details</span></div></div>";
            }
        }
        ViewData["Disclaimers"] = strTable;
        return strTable;
    }
4

1 に答える 1

0

jQuery でのイベント委任に.on()を使用する

$("#liTitle").on('click', function () {
    $("#hidSort").val('TS'); //Title Sort
    Operation('LoadDisclaimers', 'Load',0);
});

編集

$("#divContactsChecks").on('click',"span[id^='spViewDisc_']", function ()コメントに従って、代わりに使用する必要があります$("span[id^='spViewDisc_']").click(function ()

イベント ハンドラーは、現在選択されている要素にのみバインドされます。これらは、コードが を呼び出す時点でページに存在している必要があります.click()

于 2013-10-26T11:43:10.957 に答える