0

我有一个使用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,但我不确定为什么?

4

2 回答 2

1

$(document).ready()在文档完成渲染后触发。因此,如果您已经呈现了您的页面并且现在正在与它进行交互,那么该 ready 语句将不再具有任何相关性,直到您重新加载页面。所以,不要把它放在一个函数中。

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

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

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

于 2015-04-04T18:46:09.480 回答
0

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

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

文档就绪功能应始终保持在顶层。另外请检查加载页面时是否有任何JS错误。

于 2015-04-04T18:42:24.087 回答