Javascript 为什么在ajax请求后未加载document.ready

Javascript 为什么在ajax请求后未加载document.ready,javascript,ajax,asp.net-core,partial-views,razor-pages,Javascript,Ajax,Asp.net Core,Partial Views,Razor Pages,我想在我的局部视图中单击标记后调用java脚本,它第一次工作,但在使用ajax并呈现我的局部视图后第二次工作,它不会转到标记事件。让我们展示我的代码,让您更好地掌握它。这是我的父视图: @using X.PagedList @using X.PagedList.Mvc.Core @using X.PagedList.Mvc.Core.Common @model X.PagedList.IPagedList<Services.ViewModel.Admin.Nurse.NurseDetail

我想在我的局部视图中单击标记后调用java脚本,它第一次工作,但在使用ajax并呈现我的局部视图后第二次工作,它不会转到标记事件。让我们展示我的代码,让您更好地掌握它。这是我的父视图:

@using X.PagedList
@using X.PagedList.Mvc.Core
@using X.PagedList.Mvc.Core.Common
@model X.PagedList.IPagedList<Services.ViewModel.Admin.Nurse.NurseDetailsViewModel>
@{
    ViewData["Title"] = "RegisteredNurseList";
    Layout = "~/Views/Shared/_AdminLayout.cshtml";


}
// LOT OF HTML TAG CODE HERE I JUST IGNOR THEM...
       <section id="table-transactions">
          <!-- datatable start -->
                <div id="nursesList">
                        <partial name="PaginatedNurses" model="Model" />
                    </div>
                

                <!-- datatable ends -->
            </div>
        </section>
@section modalSection
{
<script>
        window.$(document).ready(function () {
            window.$('#RegisteredNursePaginated').find('a[href]').on('click',
                function (e) {
                    e.preventDefault();
                    var sortOrder = window.$("#sortOrder").val();
                    var sortType = window.$("#sortType").val();
                    var minAge = window.$("#minAge").val();
                    var maxAge = window.$("#maxAge").val();
                    var page = getQueryStringValue(this, 0).replace('page=', '');
                    // window.$("#pageGetter").val(page);
                    debugger;
                    console.log(this);
                    window.$.ajax({
                        url: "/admin/RegisteredNurseList/",
                        type: 'GET',
                        data: {
                            page: page,
                            SortOrder: sortOrder,
                            sortType: sortType,
                            MinAge: minAge,
                            MaxAge: maxAge
                        },
                        success: function (result) {
                            debugger;
                            window.$('#RegisteredNursePaginated').html(result);
                        }
                    });
                    return false;
                });
        });
    </script>
}
正如您看到的,有一个html标记帮助程序
@html.PagedListPager((IPagedList)Model,…
这是使用
标记的。我的意思是,单击该标记后,它将进入父
modelssection

<script>
        window.$(document).ready(function () {
            window.$('#RegisteredNursePaginated').find('a[href]').on('click',
                function (e) {
                    e.preventDefault();
                    var sortOrder = window.$("#sortOrder").val();
                    var sortType = window.$("#sortType").val();
                    var minAge = window.$("#minAge").val();
                    var maxAge = window.$("#maxAge").val();
                    var page = getQueryStringValue(this, 0).replace('page=', '');
                    // window.$("#pageGetter").val(page);
                    debugger;
                    console.log(this);
                    window.$.ajax({
                        url: "/admin/RegisteredNurseList/",
                        type: 'GET',
                        data: {
                            page: page,
                            SortOrder: sortOrder,
                            sortType: sortType,
                            MinAge: minAge,
                            MaxAge: maxAge
                        },
                        success: function (result) {
                            debugger;
                            window.$('#RegisteredNursePaginated').html(result);
                        }
                    });
                    return false;
                });
        });
    </script>

窗口。$(文档).ready(函数(){
window.$(“#RegisteredNursePaginated”).find('a[href')。on('click',
职能(e){
e、 预防默认值();
var sortOrder=window.$(“#sortOrder”).val();
var sortType=window.$(“#sortType”).val();
var minAge=window.$(“#minAge”).val();
var maxAge=window.$(“#maxAge”).val();
var page=getQueryStringValue(this,0).replace('page=','');
//window.$(“#pageGetter”).val(第页);
调试器;
console.log(this);
window.$.ajax({
url:“/admin/RegisteredNurseList/”,
键入:“GET”,
数据:{
第页:第页,
巫师:巫师,
sortType:sortType,
米纳奇:米纳奇,
MaxAge:MaxAge
},
成功:功能(结果){
调试器;
window.$('#RegisteredNursePaginated').html(结果);
}
});
返回false;
});
});
它第一次工作,但在使用ajax并通过控制器渲染后,在单击
标记后,它将不会再转到该部分。这是我的控制器:

public async Task<IActionResult> RegisteredNurseList(int? page, int? sortType, string sortOrder,
            int? minAge, int? maxAge)
        
        {
            bool isAjax = HttpContext.Request.Headers["X-Requested-With"] == "XMLHttpRequest";
            
            ViewBag.PageNumber = page ?? 1;
            int pageSize = 2;
            int skip = (ViewBag.PageNumber - 1) * pageSize;
            ViewBag.MinAge = minAge ?? 18;
            ViewBag.MaxAge = maxAge ?? 99;
            ViewBag.SortType = sortType ?? 1;
            ViewBag.SortOrder = sortOrder ?? "age";

            var tuple = await _admin.GetNurses(skip, pageSize, sortOrder ?? "age", sortType ?? 1, minAge ?? 18, maxAge ?? 99);
            int total = tuple.Item2;
            var nurses = tuple.Item1;
            var result = new StaticPagedList<NurseDetailsViewModel>(nurses, ViewBag.PageNumber, pageSize, total);


            if (isAjax)
            {
                return (ActionResult)PartialView("PaginatedNurses", result);
            }
            
            return View(result);

        }
public async Task RegisteredNurseList(int?page,int?sortType,string sortOrder,
int?minAge,int?maxAge)
{
bool isAjax=HttpContext.Request.Headers[“X-Request-With”]=“XMLHttpRequest”;
ViewBag.PageNumber=第1页;
int pageSize=2;
int skip=(ViewBag.PageNumber-1)*页面大小;
ViewBag.MinAge=MinAge±18;
ViewBag.MaxAge=MaxAge±99;
ViewBag.SortType=SortType±1;
ViewBag.SortOrder=SortOrder??“年龄”;
var tuple=await_admin.GetNurses(跳过、页面大小、排序规则??“年龄”、排序类型??1、最小值??18、最大值??99);
int total=tuple.Item2;
var=tuple.Item1;
var结果=新的静态页面列表(护士、ViewBag.PageNumber、页面大小、总数);
if(isAjax)
{
返回(ActionResult)PartialView(“PaginatedNurses”,result);
}
返回视图(结果);
}

在@steve perfect comment之后,我得到了他的想法,我改变了我的代码,如下所示,然后成功了:

<script>
function AjaxInit() {
            window.$('#RegisteredNursePaginated').find('a[href]').on('click',
                function (e) {
                    e.preventDefault();
                    var sortOrder = window.$("#sortOrder").val();
                    var sortType = window.$("#sortType").val();
                    var minAge = window.$("#minAge").val();
                    var maxAge = window.$("#maxAge").val();
                    var page = getQueryStringValue(this, 0).replace('page=', '');
                    // window.$("#pageGetter").val(page);
                    debugger;
                    console.log(this);
                    window.$.ajax({
                        url: "/admin/RegisteredNurseList/",
                        type: 'GET',
                        data: {
                            page: page,
                            SortOrder: sortOrder,
                            sortType: sortType,
                            MinAge: minAge,
                            MaxAge: maxAge
                        },
                        success: function (result) {
                            debugger;
                            window.$('#RegisteredNursePaginated').html(result);
                        }
                    });
                    return false;
                });
        }
    </script>
<script>
        window.$(document).ready(function () {
            AjaxInit();
        });
    </script>
    <script>
        $(document).ajaxComplete(function () {
            AjaxInit();
        });
    </script>

函数AjaxInit(){
window.$(“#RegisteredNursePaginated”).find('a[href')。on('click',
职能(e){
e、 预防默认值();
var sortOrder=window.$(“#sortOrder”).val();
var sortType=window.$(“#sortType”).val();
var minAge=window.$(“#minAge”).val();
var maxAge=window.$(“#maxAge”).val();
var page=getQueryStringValue(this,0).replace('page=','');
//window.$(“#pageGetter”).val(第页);
调试器;
console.log(this);
window.$.ajax({
url:“/admin/RegisteredNurseList/”,
键入:“GET”,
数据:{
第页:第页,
巫师:巫师,
sortType:sortType,
米纳奇:米纳奇,
MaxAge:MaxAge
},
成功:功能(结果){
调试器;
window.$('#RegisteredNursePaginated').html(结果);
}
});
返回false;
});
}
窗口。$(文档).ready(函数(){
AjaxInit();
});
$(文档).ajaxComplete(函数(){
AjaxInit();
});

onclick赋值似乎是在document.ready时间完成的,然后,当您重新加载部分时,该赋值将丢失。我建议创建一个函数并将其存储在外部js文件中。然后在document.ready和成功ajax后调用该函数execution@Steve太好了,我终于明白你的意思了,现在我的代码可以用了德,我会发布你的解决方案。
<script>
function AjaxInit() {
            window.$('#RegisteredNursePaginated').find('a[href]').on('click',
                function (e) {
                    e.preventDefault();
                    var sortOrder = window.$("#sortOrder").val();
                    var sortType = window.$("#sortType").val();
                    var minAge = window.$("#minAge").val();
                    var maxAge = window.$("#maxAge").val();
                    var page = getQueryStringValue(this, 0).replace('page=', '');
                    // window.$("#pageGetter").val(page);
                    debugger;
                    console.log(this);
                    window.$.ajax({
                        url: "/admin/RegisteredNurseList/",
                        type: 'GET',
                        data: {
                            page: page,
                            SortOrder: sortOrder,
                            sortType: sortType,
                            MinAge: minAge,
                            MaxAge: maxAge
                        },
                        success: function (result) {
                            debugger;
                            window.$('#RegisteredNursePaginated').html(result);
                        }
                    });
                    return false;
                });
        }
    </script>
<script>
        window.$(document).ready(function () {
            AjaxInit();
        });
    </script>
    <script>
        $(document).ajaxComplete(function () {
            AjaxInit();
        });
    </script>