部分回发中丢失了所有JQuery函数

时间:2014-04-17 13:20:35

标签: javascript jquery asp.net ajax

我有一个aspx页面(在这个主页面中调用了JQuery.js)。现在这与http://code.jquery.com/jquery.js

相关联

在这个页面中,我有一个updatepanel,它动态加载不同的用户控件,然后加载自己的JS文件(使用scriptmanager)。现在在部分回发中我丢失了JQuery函数(例如.val返回undefined)。

[code]
function pageLoad(){
    //whatever you want to do on partial postback
    //alert('partial handler');

    $(jutb).watermark('Username or Email address');
    $(jptb).watermark('Password');

    Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(InitializeRequest);
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
}


// Called when async postback begins
function InitializeRequest(sender, args) {
    // alert("You are in the InitializeRequestHandler function.");  // breakpoint here
}

// Called when async postback ends
function EndRequestHandler(sender, args) {
    // this function is run after an Ajax partial postback occurs

    loadUsername();
    loadPassword();

    if (args.get_error() != undefined)
        alert("There was an error" + args.get_error().message);

    return;
}
[/code]

我的页面加载正在部分回发中调用。 (即我可以提醒它。)

我有一个触发一些JS代码的linkbutton。在部分回发之后,如果我尝试它.val返回undefined。

为什么JQuery会丢失的任何想法?

1 个答案:

答案 0 :(得分:1)

当您将响应从服务器返回到更新面板时,您在第一次加载页面时所做的所有事件处理程序绑定都会被破坏,因为这些绑定现在是新元素,即使它们满足相同的选择条件。

您可以尝试重新运行事件处理程序绑定 - 您可以创建某种init JS函数,并在EndRequestHandler中调用。

其他方式,可能更好,是使用jQuery的on将您的元素绑定到事件处理程序。看看如何使用它:

https://api.jquery.com/on/