Javascript 无法识别JQuery自定义插件函数

Javascript 无法识别JQuery自定义插件函数,javascript,jquery,Javascript,Jquery,我正在开发一个插件来替换window.showmodalDialog。然而,每当我尝试调用我的插件函数时,我都会收到典型而可怕的“对象不支持此方法” 我简化了我的插件,以显示一个简单的警报框 ( function ( $ ) { $.fn.showAlert = function () { alert( "Hello There" ); } } )( jQuery ); 这被放在一个单独的JavaScript文件中,包含在我想从中调用函数的页面上,我这样

我正在开发一个插件来替换window.showmodalDialog。然而,每当我尝试调用我的插件函数时,我都会收到典型而可怕的“对象不支持此方法”

我简化了我的插件,以显示一个简单的警报框

( function ( $ )
{
    $.fn.showAlert = function ()
    {
        alert( "Hello There" );
    }
} )( jQuery );
这被放在一个单独的JavaScript文件中,包含在我想从中调用函数的页面上,我这样调用函数:$.showarter()

执行该行会导致错误

如果我进一步简化代码,使其成为一个即时函数

( function ( $ )
{
    alert( "Hello There" );
} )( jQuery );
页面加载后,警报框立即弹出

我肯定我做错了什么,但我不知道是什么。我已经在谷歌上搜索了这个错误并查看了它,我能确定的一切就是我正在正确构建我的插件

编辑

努力提供全面披露。在我们的应用程序中,我们有一个JavaScript文件optionActions.js,它提供了几种打开新窗口的不同方法。其中一个功能是打开模式对话框OpenModel。此函数采用多个用于定义模态窗口的参数。此函数的基本结构是

function openModal(strCategory, objParam, strFeatures, strModule)
{
    //Various code and function calls to format the incoming data for the modal window

    //Provides a single object containing the necessary parameters and data for the modal window
    var objDialogIn = new OBJDIALOGIN( objParam );         

    return window.showModalDialog(strUrl, objDialogIn, strFeatures);
}
所以修改这个函数来使用我的新插件应该是这样的

//Include the JS file containing the definition for "showAlert"
document.write( "<script LANGUAGE=JavaScript src='/js/ModalDialog.js'></script>" );

function openModal(strCategory, objParam, strFeatures, strModule)
{
    //Various code and function calls to format the incoming data for the modal window

    //Provides a single object containing the necessary parameters and data for the modal window
    var objDialogIn = new OBJDIALOGIN( objParam ); 

    $( "body" ).showAlert();
}
现在,optionActions.js文件包含在应用程序中的每个其他html页面中

因此,使用这些建议,我添加了一个选择器来附加showAlert函数。根据我的方法,选择器不是null或未定义

基本上,我有一个html模块,其中包含optionActions.js文件。optionActions.js包含OpenModel函数。OpenModel是从html模块中的脚本块调用的。optionActions包括ModalDialog.js模块,其中包含showAlert函数

因此,当html模块加载时,对OpenModel的调用应触发showAlert,但showAlert未定义


我真的希望这能更清楚地说明我的困境。

因为
$。fn
期待一个选择器。使用您的代码,这可以很好地工作:
$('body').showAlert()

这并不是:

$.showAlert();
要在jquery对象上创建它,请删除.fn

(function($){
    $.showAlert = function (){
        alert( "Hello There" );
    }
})(jQuery);

$.showAlert();//works

当您使用fn作为实例方法时,它可以正常工作

(函数($){
$.fn.showAlert=函数(){
警惕(“你好”);
}
})(jQuery);
$(“正文”).showAlert()

我感谢您的回复。我理解它们的基础。然而,我已经尝试了这两种方法,但是我的函数仍然没有定义。这段代码位于它自己的JavaScript文件中,该文件包含在我调用所需函数的模块中。还有其他可能的想法吗?我需要找些工作。我们现在正在使用IE11,我们会弹出很多“模态”屏幕。我们无法调试这些,因为当我们设置断点时,它会在调用window.showModalDialog.com时中断,而没有看到问题的演示。帮你摆脱困境是不可能的。上面的代码显示您将其称为错误或定义为错误。这就是我们要做的,我完全理解,我也同意。不幸的是,我不知道如何为你提供一个例子。我将编辑我的问题并尝试提供更多信息。我真的希望能够接受这两个答案,因为每个答案都有帮助。谢谢你的回答。请参阅以上我的评论,谢谢您的回复。请看我上面的评论,谢谢你的帮助。我能让它工作
(function($){
    $.showAlert = function (){
        alert( "Hello There" );
    }
})(jQuery);

$.showAlert();//works