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 });