0

我在一个 js 文件中有这个:

$(document).ready(function(e){
    jQuery.fn.SaveAdd = function(titulo,contenido,tags) {
       // code
    }
});

我将js导入到HTML文档中,并调用了该函数:

$(document).ready(function(){
    $("#iSave").click(function(){
        // declaration of vars instead of this line
        $(this).SaveAdd(title,content,tags);    
    });
});

我有错误:没有方法SaveAdd。但是当你使用这个时:

$(document).ready(function(){
        // declaration of vars instead of this line
        $(this).SaveAdd(title,content,tags);    
});

该功能运行正常:S 我不知道出了什么问题...

4

2 回答 2

3

插件不应包装在document.ready处理程序中 - 这会将函数添加到 jQuery 直到为时已晚。正常模式是:

(function($) {

     $.fn.SaveAdd = function(...) {
         ...
     };

})(jQuery);

您不必插件模块中使用$jQuery 的别名,但这是通常的约定。

编辑我看到你真正的问题似乎是使用一个库(Aloha)动态加载它自己的jQuery版本(使用requirejs)并且不以正常方式导出它。如评论中所述,这就是您的错误消息报告问题的原因[object Object]- 明确指示$(...)未返回 jQuery 对象。

有关如何解决这些冲突的更多信息,请参阅http://aloha-editor.org/guides/dependencies.html 。

于 2013-02-10T12:26:19.517 回答
1

在您提供给我们的代码中,您似乎正在为 jQuery 创建一个插件,它有点像这样:

(function($) {

     $.fn.SaveAdd = function(titulo,contenido,tags) {
         //your great code
     };

})(jQuery);

我这里有一个样品给你

(function($) {
    $.fn.SaveAdd = function(titulo, contenido, tags) {
        alert(titulo);
        alert(contenido);
        alert(tags);
    };
})(jQuery);

$(document).ready(function() {
    $("#iSave").click(function() {
        $(this).SaveAdd("hehe", "hahha", "hohoo");
    });
});

在这里查看它是如何工作的http://jsfiddle.net/K4Tfg/

阅读一下,它肯定会解决您的问题: http ://docs.jquery.com/Plugins/Authoring

于 2013-02-10T12:26:53.840 回答