2013-02-10 71 views
0

我有這樣的一個js文件:對象沒有方法(jQuery的)

$(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方法。但是當u使用這樣的:

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

功能正確地運行:■我不知道什麼是錯的...

+0

你想創建一個jQuery插件嗎? – 2013-02-10 12:25:36

+0

當DOM準備就緒時,您正在定義插件。你應該閱讀關於插件創作這裏> http://docs.jquery.com/Plugins/Authoring – BenM 2013-02-10 12:26:14

回答

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

+0

好吧...即時通訊新的jQuery中,我不足以創建一個插件,(不2day),我readed如何使功能和使用它...我做了另一個功能,我用在其他頁面和工程,但我測試了這個頁面的相同功能,並有相同的錯誤。 – 2013-02-10 12:30:47

+0

對不起,沒有工作,有同樣的問題:S – 2013-02-10 12:41:11

+0

@ user2038286我們可以知道你遇到什麼樣的錯誤? – 2013-02-10 12:43:42

3

插件不應該被包裹在document.ready處理 - 這會推遲加的函數到jQuery,直到太晚。正常模式是:

(function($) { 

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

})(jQuery); 

你不使用$作爲插件模塊中的別名jQuery的,但它是通常的慣例。

編輯我看到你真正的問題似乎是使用一個庫(Aloha),動態加載自己版本的jQuery(使用requirejs)並且不以正常方式導出它。正如評論中提到的,這就是爲什麼你的錯誤消息報告[object Object]有問題 - 明確指示$(...)沒有返回jQuery對象。

有關如何解決這些衝突的更多信息,請參閱http://aloha-editor.org/guides/dependencies.html

+0

我會試試這種方式感謝回答,生病告訴發生了什麼5分鐘 – 2013-02-10 12:32:26

+0

更新:我用sintaxis使功能,我打電話的功能就像我在第一篇文章中提到的那樣,並且不起作用,同樣的錯誤:S – 2013-02-10 12:34:49

+0

@ user2038286有什麼錯誤? – Alnitak 2013-02-10 13:12:30