对象没有方法(jQuery)

时间:2013-02-10 12:23:54

标签: jquery function

我在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);    
});

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

2 个答案:

答案 0 :(得分:3)

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

(function($) {

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

})(jQuery);

你没有 在插件模块中使用$作为jQuery的别名,但这是通常的惯例。

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

有关如何解决这些冲突的详情,请参阅http://aloha-editor.org/guides/dependencies.html

答案 1 :(得分: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