繁体   English   中英

在ScriptManager.RegisterStartupScript之后的代码中调用脚本后,jQuery document.ready不会触发

[英]jQuery document.ready doesn't fire after script called in code behind ScriptManager.RegisterStartupScript

我有使用https://mixitup.kunkalabs.com/过滤的项目列表

例如看屏幕 格

然后,用户选择添加另一个操作-这使用fancybox作为弹出窗口,并向用户显示下一张图像: 弹出

用户添加数据后,页面将使用更新面板进行部分回发。 然后,该代码从后面的代码中调用js函数以关闭弹出窗口,然后调用mixitup函数重新初始化列表,因为该列表中现在有一个新项,但是不起作用。

这是调用js的背后代码

ScriptManager.RegisterStartupScript(Me, [GetType](), "Load", "ReloadData();", True)

这是将被调用的js:

function ReloadData() {
    parent.jQuery.fancybox.close();
    $(document).ready(function () {
        $('#Container').mixItUp({layout: {display: 'block'}});
    });
}

fancybox关闭,但mixitup从未触发,因为它从未通过docment.ready测试,这意味着未加载它,因此无法运行jQuery,但是我不确定为什么吗?

$(document).ready()在文档渲染完成后触发。 因此,如果您已经渲染了页面并且现在正在与之交互,则在重新加载页面之前,该ready语句不再具有任何意义。 因此,请勿将其放在函数中。

只需在功能块内调用您的mixItUp代码即可。

function ReloadData() {
    parent.jQuery.fancybox.close();
    $('#Container').mixItUp({layout: {display: 'block'}});
}

作为建议:如果您已经在使用jQuery,请不要理会更新面板。 只需通过$.ajax ajax调用即可。

您应该将以下代码放在ReloadData()函数之外。

$(document).ready(function () {
        $('#Container').mixItUp({layout: {display: 'block'}});
    });

文件就绪功能应始终保持在最高级别。 另外,请在加载页面时检查是否有JS错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM