部分加载时运行Javascript / Jquery

时间:2013-01-25 17:01:56

标签: c# javascript ajax asp.net-mvc asp.net-mvc-4

所有示例/答案似乎都显示在页面加载时运行部分的javascript。

页面加载时不加载此部分...稍后使用AJAX点击按钮加载。

我试过我的JS

$(document).ready(function () {

AND:

$(function(){

AND:

本身

首先根本不会触发。第二和第三似乎触发第二页加载。我假设因为我的js影响的div将存在。那么如何在部分加载 ..

时运行它

2 个答案:

答案 0 :(得分:3)

$(document).ready(function () {
    ...
});

将在页面加载时触发(更具体地说,$(document).ready连接到document.DOMContentLoaded或window.loaded事件)但是因为您使用ajax加载Partial,所以当部分加载时页面加载事件已被触发装了。

如果您使用jQuery通过ajax加载部分页面,我建议您从

调用您的函数
$ajax(...
}).done(function ( data ) {
    yourFunction();
});

或者如果您使用AjaxHelper类(例如使用razor @ Ajax.ActionLink(...)),则使用其AjaxOption的OnSuccess或OnComplete属性连接您的javascript函数。喜欢以下方式:

@Ajax.ActionLink("Load partial", "MyPartialAction", new AjaxOptions
{
    UpdateTargetId="partialContainer",
    OnSuccess="partialLoaded"
}

此代码将从MyPartialAction操作返回的Partial加载到具有“partialContainer”id的标记中,并在Partial加载了名为partialLoaded的javascript函数之后。

答案 1 :(得分:2)

如果要在部分加载时使其运行,请在发出部分请求的回调中执行此操作。如果此请求发布者是Jquery,则它将类似于以下内容:

$.get(url, function (result) {
    // Do whatever you want here in the success callback.
});

如果您正在使用MVC帮助器方法(如Ajax.ActionLink)执行某些操作,则可以指定一个jquery函数来调用响应

@Ajax.ActionLink("NameOfLink", "ControllerAction", new AjaxOptions
{
    HttpMethod = "GET",
    OnSuccess = "javascriptFunction(data)"
})

function javascriptFunction(data) {
    // Do whatever you want
}