我正在处理的应用程序是管理员的内部业务应用程序。这是一个C#Web应用程序。主办公室有一个运行此应用程序的实例,它始终具有最新版本。每个商店都有自己运行的应用程序实例,但可能并不总是拥有最新版本。经理登录到主办公室应用程序,然后选择要查看的商店。该商店的实例在应用程序的主要部分被拉出,上面的菜单栏来自主办公室的实例。因此,主办公室可能有v1.8,商店有v1.7。
1.8中有一些功能显示在菜单栏上,我想隐藏在1.7中。主页面有多个部分加载,最后一部分具有特定商店的版本号,该版本号由该商店服务器上的代码确定。因此,获取版本号的唯一方法是在页面上呈现它之后获取它。我遇到的主要问题是我用来隐藏新功能的链接的Javascript在部分版本号加载之前运行。
我需要Javascript等到整个页面完成加载才能执行隐藏代码。此外,该应用程序仅在Chrome中运行。
以下是我隐藏链接的代码:
$(window).load(function () {
if ($('.version').length !== 0) {
if (parseFloat($('.version').text().slice(5)) > 1.7) {
$('.analysis').show();
} else {
$('.analysis').hide();
}
}
});
答案 0 :(得分:1)
如果你明确地在客户端使用ajax加载partial,你可以添加一个完整的函数来调用:
$( "#storeContainer" ).load( "url/for/partial", function () {
if ($('.version').length !== 0) {
if (parseFloat($('.version').text().slice(5)) > 1.7) {
$('.analysis').show();
} else {
$('.analysis').hide();
}
}
});
当然,如果可以的话,你可能希望“url / for / partial”使用@ Url.Content或@ Url.Action。
如果您使用的是Ajax Helper,则可以设置AjaxOptions的OnSuccess属性来回拨:
@Ajax.ActionLink("Refresh",
"Store",
new AjaxOptions {
HttpMethod = "POST",
UpdateTargetId = "storeContainer",
InsertionMode = InsertionMode.Replace,
OnSuccess = "updateSuccess" });
您在javascript中定义了OnSuccess函数:
var updateSuccess = function () {
if ($('.version').length !== 0) {
if (parseFloat($('.version').text().slice(5)) > 1.7) {
$('.analysis').show();
} else {
$('.analysis').hide();
}
}
关于如何在部分视图中包含脚本或在How to initialize jquery ui widgets that may be loaded dynamically in MVC3 application上的ajax成功事件期间调用脚本还有一些其他想法
如果您使用的是Asp.net AJAX,则可以使用Sys.Application.add_load(function(){...})
。
答案 1 :(得分:0)
您是否尝试过使用
$(document).on("ready", function() {
});
代替$ window.load()?