热门IT资讯网

jquery插件编写

发表于:2024-11-26 作者:热门IT资讯网编辑
编辑最后更新 2024年11月26日,1、$.extend() 函数用于将一个或多个对象的内容合并到目标对象。注意:(1)、 如果只为$.extend()指定了一个参数,则意味着参数targetObj被省略。此时,targetObj就是j

1、$.extend() 函数用于将一个或多个对象的内容合并到目标对象。
注意:(1)、 如果只为$.extend()指定了一个参数,则意味着参数targetObj被省略。此时,targetObj就是jQuery对象本身。通过这种方式,我们可以为全局对象jQuery添加新的函数。
(2)、 如果多个对象具有相同的属性,则后者会覆盖前者的属性值。
2、$.extend( targetObj , object1 , object2 ... )
上面是将object1,object2...合并到targetObj中,返回值为合并后的targetObj,由此可以看出该方法合并后,是修改了targetObjt的结构的。如果想要得到合并的结果却又不想修改targetObj的结构,可以如下使用:
var targetObj = $.extend( {}, object1,object2... );//也就是将"{}"作为targetObj参数,然后将合并结果返回给targetObj了

3、$.extend( object1 ) //省略targetObj参数,如果省略了targetObj,则该方法就只能有一个obj参数,也就是将object1合并到jquery的全局对象中去

4、$.fn.extend(src); //该方法将src合并到jquery的实例对象中去

                    插件编写                

链接一 链接二 链接三

改编成了jquery插件

(function($){                $.fn.starRating = function(options){                    var defaults = {                        num:2                    }                    var settings = $.extend({},defaults,options);                    var starLight = function(items,num){                        items.each(function(i,elem){                            if(i<=num){                                $(this).addClass("on");                            }else{                                $(this).removeClass("on")                            }                        })                    };  //这种函数声明是赋值写法,最后需要加分号**;**                    var init = function(el,num){                        var starList = $(el),                        items = starList.find(".star-item");                        starLight(items,num-1);                        starList.on("mouseover",".star-item",function(){                            starLight(items,$(this).index())                        }).on("click",".star-item",function(){                            num = $(this).index();                        }).on("mouseout",function(){                            starLight(items,num)                        })                    };                    return this.each(function(){                        num = settings.num;                        init(this,num);                    })                }            })(jQuery)            $(".star-list").starRating({                num:3            });
0