创建Jquery插件

4

我正在创建一个简单的警告选项的jquery插件。我按照以下方式编写了代码,但它并没有起作用。 下面的代码是单独的js文件。

(function($) {
        $.fn.gettingmessage = function() {

            var element = this;

            $(element).load(function() {

                alertingcontent();

                function preventnextpage() {
                    return false;
                }

                function alertingcontent() {
                    alert("nicely done");
            });
        };

    })(jQuery);

我将这个函数称为这种方式
     $(function(){  
  $("body").gettingmessage();  
}); 

我不确定如何修复这个问题,任何建议都将是极好的。JSFIDDLE

谢谢。


1
var element = this;” 在插件中,“this”不是一个元素,而是jQuery的集合,其中可能有零个或多个元素。在您上面展示的代码中,这并不重要;但如果您执行任何非平凡操作,则会变得重要。 - T.J. Crowder
“但它不起作用”并不是一个有用的问题描述。它不起作用,具体表现是什么?你期望发生什么?实际上会发生什么?控制台中出现了哪些错误?(如果没有错误,那也是有用的信息。) - T.J. Crowder
第一个问题是您忘记关闭“alertingcontent”函数的主体。使用Firebug /开发人员工具捕获此类简单语法错误。 - Tibos
1个回答

5
  • 首先,你漏掉了一个闭合括号。
  • 其次,load() 函数并不是你所寻找的功能,请使用 ready() 替代它。

更新后的代码:

(function($) {
    $.fn.gettingmessage = function() {

        var element = this;

        $(element).ready(function() {

            alertingcontent();

            function preventnextpage() {
                return false;
            }

            function alertingcontent() {
                alert("nicely done");
            }
        });
    };

})(jQuery);

$(function(){  
  $("body").gettingmessage();  
}); 

Updated jsFiddle


1
据我所知,ready() 仅绑定到 document 上以检查 DOM 是否已准备就绪。这里的 load 事件没有任何问题(它还考虑了图像,而 ready 不考虑)。 - Johan
我猜问题在于load()绑定到了body,而当JavaScript被执行时,body已经被加载。 - zessx
这取决于body中的所有资源是否已加载。考虑使用$(window).load$(document).ready - Johan
嗨,@zessx,有一个快速的问题。它运行得很好,但是当我添加带有ID的函数时它不起作用?看到我将div更改为不同的ID,调用jquery函数的ID也不同,但我仍然收到警报。http://jsfiddle.net/vicky081/WTNLq/10/ - Vignesh Pichamani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接