JQuery 插件无法与 ASP.NET AJAX 的 ScriptManager 一起正常工作

发布于 2024-08-20 03:34:47 字数 972 浏览 6 评论 0原文

我正在尝试在控件中使用 jQuery 插件。控件所在的页面通过 UpdatePanel 使用部分回发。我在控件的 PreRender 事件期间包含 jQuery 和插件,如下所示:

ScriptManager.RegisterClientScriptInclude(
    this,
    this.GetType(),
    "jquery",
    "/_infrastructure/javascript/jquery.js"));

ScriptManager.RegisterClientScriptInclude(
    this,
    this.GetType(),
    "jquery.customPlugin",
    "/_infrastructure/javascript/jquery.customPlugin.js");

customPlugin jQuery 插件设置了一个名为“executeCustomPlugin”的新函数。后来在控件的 PreRender 事件中,我在控件上的元素上使用该插件:

ScriptManager.RegisterStartupScript(
    this,
    this.GetType(),
    "customPlugin init script",
    @"$(document).ready(function() {
        $('#elementId').executeCustomPlugin();
    });",
    true);

但是,当它执行时,我收到 JavaScript 错误:

$('#elementId').executeCustomPlugin is not a function

看起来好像 jQuery 插件根本没有执行过,但我设置了jQuery.customPlugin.js 文件中的 window.alerts ,它确实正在执行。

有办法解决这个问题吗?

I am trying to use a jQuery plugin in a control. The pages that the control can be on use partial postbacks via an UpdatePanel. I include jQuery and the plugin during the control's PreRender event like this:

ScriptManager.RegisterClientScriptInclude(
    this,
    this.GetType(),
    "jquery",
    "/_infrastructure/javascript/jquery.js"));

ScriptManager.RegisterClientScriptInclude(
    this,
    this.GetType(),
    "jquery.customPlugin",
    "/_infrastructure/javascript/jquery.customPlugin.js");

The customPlugin jQuery plugin sets up a new function called "executeCustomPlugin". Later in the PreRender event of the control, I use the plugin on an element on the control:

ScriptManager.RegisterStartupScript(
    this,
    this.GetType(),
    "customPlugin init script",
    @"$(document).ready(function() {
        $('#elementId').executeCustomPlugin();
    });",
    true);

However, when it executes, I get the JavaScript error:

$('#elementId').executeCustomPlugin is not a function

It would seem as if the jQuery plugin is never executed at all, but I set up window.alerts in the jQuery.customPlugin.js file, and it is indeed being executed.

Is there a way to fix this problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤独患者 2024-08-27 03:34:47

一个可能的解释是,在执行 ScriptManager 代码之前,您的插件并不存在于 DOM 中。

在将页面呈现到浏览器后查看页面的源代码,并确保您的自定义插件的脚本标记在向脚本管理器注册的 JavaScript 之前呈现。

A possible explanation is that your plugin doesn't exist in the DOM prior to the execution of the ScriptManager code.

View the source of the page after it is rendered to the browser and ensure that your custom plugin's script tag is rendered before the javascript that is registered with your script manager.

☆獨立☆ 2024-08-27 03:34:47

事实证明,我的问题是由于两次包含 jQuery 引起的。第一个 jQuery 实例正在应用插件,但第二个 jQuery 实例正在接收调用。

It turns out that my problem was caused by including jQuery twice. The first jQuery instance was getting the plugin applied, but the second jQuery instance was receiving the call.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文