我在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);
});
该功能正确运行:我不知道出了什么问题......
答案 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