如何在 asp:button 单击后刷新 jQuery 事件绑定

How to refresh jQuery event bind after asp:button click

我需要一种方法来刷新此 jQuery 代码:

$(".alert_info").colorbox({
    inline: true, width: "50%",
    onOpen: function () {
    }
});

单击 asp 按钮后:

<asp:Button runat="server" ID="btnSearch" Text="Search" OnClick="btnSearch_Click" />

我尝试使用:

$(document).ready(function () {
   $(".alert_info").colorbox({
       inline: true, width: "50%",
       onOpen: function () {
       }
   });
});

没用...

我尝试使用:

$(".alert_info").on("click", function () {
        $(".alert_info").colorbox({
            inline: true, width: "50%",
            onOpen: function () {
            }
        });
    });

也没用...

这是 class 的输入。alert_info:

<a class="alert_info cboxElement" href="#alertWin10">View details</a>

当有 postback 或 parital post back 时,您可以重新绑定事件侦听器。您应该能够在您的 js 中定位 pageLoad 事件。另一种选择是将所有初始化代码放在 (javascript) pageLoad 函数中,因为只要有 postback 或部分 postback (ajax/update 面板)。

function pageLoad(sender, args) {
    //rebind events here
}

这只是我不喜欢 WebForms 的原因之一。

请按照以下步骤操作,看看您的问题是否已解决。

  1. 将下面的代码分配给一个字符串

    $(文档).ready(函数(){ $(".alert_info").colorbox({ 内联:真,宽度:“50%”, 打开:函数(){ } }); });

  2. 使用 Scriptmanager.RegisterStartupScript 并将属性值与脚本字符串一起传递,并从代码隐藏的按钮单击事件中调用相同的内容。

这将调用代码并刷新您的脚本。

嗯,终于解决了:

$(function () {
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_endRequest(function () {
            $(".alert_info").colorbox({
                inline: true, width: "50%",
                onOpen: function () {
                    var json = $.parseJSON($(this).siblings("input[type='hidden']").first().val());

                }
            });
        });
    });

这是一个 link 显示解决方案 See "mitsbits" answer