使用ASP.NET AJAX的ScriptManager,JQuery插件无法正常工作

时间:2010-02-04 20:28:41

标签: asp.net jquery asp.net-ajax jquery-plugins scriptmanager

我正在尝试在控件中使用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,它确实正在执行。

有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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