【问题标题】:initial jquery not working when updatepanel is updated更新updatepanel时初始jquery不起作用
【发布时间】:2012-11-29 18:15:34
【问题描述】:

我已查看有关此问题的帖子,但似乎没有一个解决方案适合我。

我有一个带有 jquery 脚本的 js 文件,该文件加载到页面的 head 部分

我还有一个更新面板,其中包含一个子用户控件,其中放置了我的触发按钮。 正确单击子按钮时更新面板会更新。

一切正常,只是 jquery 不再工作。

我发现 $(document).ready 不适用于部分回发的信息,所以我的更新面板就是这种情况。

我还发现了可以使用 ScriptReference 添加路径的信息,因此我将其添加到持有 UpdatePanel 的用户控件的 Page_Load 中:

    ScriptReference sr = new ScriptReference("~/js/jquerycripts.js");
    ScriptManager.Scripts.Add(sr);

但它也不起作用。

不知道还能尝试什么。

任何建议都会有所帮助。

谢谢

【问题讨论】:

标签: javascript jquery updatepanel scriptmanager


【解决方案1】:

您可以使用此代码代替 $(document).ready(YourFunctionName);

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(YourFunctionName)

【讨论】:

  • 伟大的帮助..!!谢谢
【解决方案2】:

如果我理解正确,更新面板中的子按钮会触发 jQuery 代码。您正在将 onclick 行为附加到准备好的文档上。当您刷新内容时,初始子按钮消失了。它可能会被新的替换,但新的没有点击行为,正如预期的那样。

解决此问题的最简单方法是事件委托:将 onclick 事件附加到不会刷新的更新面板的父级。有关详细信息,请参阅此页面:http://api.jquery.com/on/。在您的情况下, on() 将应用于父级,选择器将是您的子按钮。

另一种方法是在每次更新面板加载后重新运行 jQuery 代码。

【讨论】:

  • jQuery 像其他 js 和 css 文件一样在页面加载时从 .js 文件加载到 head 部分。该按钮触发updatepanel的更新,它不会专门触发jquery。问题是更新后的 updatepanel 不会将原始 jquery(来自 .js)重新加载到其内容中,因此我用于 updatepanel 内容的所有 jquery 在面板更新时都会丢失。我不知道如何在面板更新时重新加载原始 jquery。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多