我在整个系统中实现JQuery是比较新的,我正在享受这个机会。
我遇到一个问题,我想找到正确的决心。
以下是我想做的一个简单案例:
我在页面上有一个按钮,在点击事件我想调用一个我定义的jquery函数。
- (function($) {
- $.fn.MessageBox = function(msg) {
- alert(msg);
- };
- });
这是我的HTML页面:
- <HTML>
- <head>
- <script type="text/javascript" src="C:\Sandpit\jQueryTest\jquery-1.3.2.js"></script>
- <script language="javascript" src="Page.js"></script>
- </head>
- <body>
- <div class="Title">Welcome!</div>
- <input type="button" value="ahaha" onclick="$().MessageBox('msg');" />
- </body>
- </HTML>
我知道我可以在文档就绪事件中添加点击事件,但是将事件放在HTML元素中似乎更易于维护。但是我没有找到办法来做到这一点。
有没有办法在按钮元素(或任何输入元素)上调用jquery函数?还是有更好的方法呢?
谢谢
编辑:
谢谢你的回复,看来我没有正确使用JQuery。我真的很想看到一个使用JQuery的系统的例子,并且如何处理事件。如果你知道任何示例来证明这一点,请让我知道。
我使用JQuery的基本目标是帮助简化和减少大型Web应用程序所需的JavaScript数量。
解决方法
我不认为有任何理由将此函数添加到JQuery的命名空间。为什么不自己定义方法呢?
- function showMessage(msg) {
- alert(msg);
- };
- <input type="button" value="ahaha" onclick="showMessage('msg');" />
更新:对于如何定义方法的一个小小的改变,我可以让它工作:
- <html>
- <head>
- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
- <script language="javascript">
- // define the function within the global scope
- $.fn.MessageBox = function(msg) {
- alert(msg);
- };
- // or,if you want to encapsulate variables within the plugin
- (function($) {
- $.fn.MessageBoxScoped = function(msg) {
- alert(msg);
- };
- })(jQuery); //<-- make sure you pass jQuery into the $ parameter
- </script>
- </head>
- <body>
- <div class="Title">Welcome!</div>
- <input type="button" value="ahaha" id="test" onClick="$(this).MessageBox('msg');" />
- </body>
- </html>