如何创建自定义JQuery函数以及如何使用它?

时间:2012-03-03 23:41:54

标签: jquery function

我正在搜索有关的信息 - “如何创建自定义(自己的)JQuery函数以及如何使用它”

我在谷歌搜索过,但我没有找到相关信息。

您能否详细解释一下自定义功能?

6 个答案:

答案 0 :(得分:57)

通过“自定义函数”我假设你的意思是“插件”。如果是这样的话,就会有一个很好的tutorial on the jQuery site。基本思路是:

(function($) {
    $.fn.myPlugin = function() {
        return this.each(function() {
            //Do stuff
        });
    };
}(jQuery));

基本上,上面的代码做了一些事情。首先,它捕获jQuery的值并将其传递给匿名函数,然后可以将其称为$(这样,您的插件的用户恰好使用{{1}其他东西的标识符仍然可以使用它。)

然后在$上声明一个方法,它只是$.fn的别名。在该方法中,$.prototype指的是已调用插件的匹配元素集。由于这是一个jQuery对象,并且可能包含多个元素,因此需要迭代该集合(这就是this存在的原因)。

each语句用于维护插件与其他jQuery方法的可链接性。由于return返回一个jQuery实例,插件本身返回一个jQuery实例,显然可以在jQuery实例上调用其他jQuery方法。

答案 1 :(得分:6)

正如gesutery所说,使用extend()。您可以将自己的属性和函数添加为值:

        $(function(){
            $.extend({
                propAsString: '',
                propAsNumber: 12345,
                propAsObject: {},
                propAsFunction: function() {
                    //your function code
                }
            });

        $.propAsFunction();     //call your function
        });

答案 2 :(得分:5)

你可以像这样使用它

  $(document).ready(function() {
        $('#button').click(function(){
            $(this).myFunction();
         });
         $.fn.myFunction = function() { 
            alert('test'); 
         }
    });

答案 3 :(得分:4)

(function($){
    $.fn.extend({ 
        //plugin name - animatemenu
        animateMenu: function(options) {

            //Settings list and the default values
            var defaults = {
                animatePadding: 60,
                defaultPadding: 10,
                evenColor: '#ccc',
                oddColor: '#eee'
            };

            var options = $.extend(defaults, options);

            return this.each(function() {
                var o =options;

                //Assign current element to variable, in this case is UL element
                var obj = $(this);              

                //Get all LI in the UL
                var items = $("li", obj);

                //Change the color according to odd and even rows
                $("li:even", obj).css('background-color', o.evenColor);             
                $("li:odd", obj).css('background-color', o.oddColor);                     

                //Attach mouseover and mouseout event to the LI  
                items.mouseover(function() {
                    $(this).animate({paddingLeft: o.animatePadding}, 300);

                }).mouseout(function() {
                    $(this).animate({paddingLeft: o.defaultPadding}, 300);
                });

            });
        }
    });
})(jQuery);

答案 4 :(得分:3)

对于那些按照标题寻找“自定义功能”的人来说,它很简单:

if(window.$)
    window.$.customMethod = function() { * your code here * };

这将像$.ajax()一样

答案 5 :(得分:1)

我希望像$.myfunction()一样调用我的自定义函数。我在外部js文件中定义了这些函数,有点像这样

$.myfunction = function(){

//Your code here    
};