jquery插件开发教程入门

今天在写jquery代码的时候,又想把功能做成jquery插件,尼玛,按照前一篇的思路来做,不用插件模式的已经开发出来了,可是一用到插件就歇菜了,这是难不倒我的。本着继续折腾的精神,继续找另外一些好的教程来学习,其实我的jquery插件都是很简单的,不需要庞大的参数的。

于是找到了一篇文章自己动手开发jQuery插件

照着文中的思路做下来,的确做成了一个小插件。

本文里面只讲基于对象级别的插件开发,基于类别的插件开发不讲,请自己看书或者搜索。

前一篇文章中我们知道对象级别的插件开发是从这样子开始的。

(function( $ ) { 
      $.fn.myPlugin = function() { 
            // 这里开始写功能需求
       }; 
})( jQuery );

现在我们的基础代码写出来了,功能是实现点击跳到相应的位置,html代码如下:

<ul id="topnav">
    <li class="active"><a href="#data-checked">检测数据</a></li>
    <li><a href="#drugs">用药情况</a></li>
    <li><a href="#sports">运动情况</a></li>
    <li><a href="#food">饮食习惯</a></li>
    <li><a href="#life">生活习惯</a></li>
    <li><a href="#harm">病史症状</a></li>
</ul>

原来的jquery代码如下:

$(function(){
        $("#topnav li").live({
            "hover":function(){
                $(this).toggleClass("hover");
            },
            "click":function(){
                $(this).addClass("active").siblings().removeClass("active");
                var divItem = $(this).find("a").attr("href");
                var divHeight = $(divItem).offset().top;
                $("body,html").stop(true,false).animate({scrollTop:divHeight - 40},500);
                return false;
            }
        });
    });

根据上面的jquery插件书写方法,可以修改为两种方式,一种是鼠标点击,一种是鼠标经过,插件方法如下:

;(function ($) {  
    $.fn.navScroll = function (options) {  
        var defualts = { switchingMode: "click", offsetTop: 0 };
        //switchingMode 为触发模式 offsetTop 为滚动距离元素顶部的高度
        var opts = $.extend({}, defualts, options);  
        var obj = $(this);
        $("li",obj).hover(function(){$(this).toggleClass("hover");}); 
        $("li:first", obj).addClass("active");  
        $("li", obj).bind(opts.switchingMode, function () {                  
                $(this).addClass("active").siblings().removeClass("active"); 
                var divid = $("a", $(this)).attr("href")
                var divHeight = $(divid).offset().top;
                $("body, html").stop(true,false).animate({scrollTop:divHeight - opts.offsetTop},500);
                return false; 
        });  
    };  
})(jQuery);
$(function () {  
    $("#topnav").navScroll({switchingMode:"hover",offsetTop:40});  
});

简单的功能。转化为jquery插件可以用两种方式,一种是点击,一种是鼠标滑过。

这个插件里面已经有了扩展了。

另外还可以使用链式的方式返回。只要在function(){后面加

return this.each(function () {
//原代码
}
调用的时候可以用
$("#topnav").tabs({switchingMode:"hover"}).css("border","1px solid #ff0000");

查看演示

51cto的jquery专题有很多干货:http://developer.51cto.com/art/201005/202450.htm


关注我

我的微信公众号:前端开发博客,在后台回复以下关键字可以获取资源。

  • 回复「小抄」,领取Vue、JavaScript 和 WebComponent 小抄 PDF
  • 回复「Vue脑图」获取 Vue 相关脑图
  • 回复「思维图」获取 JavaScript 相关思维图
  • 回复「简历」获取简历制作建议
  • 回复「简历模板」获取精选的简历模板
  • 回复「加群」进入500人前端精英群
  • 回复「电子书」下载我整理的大量前端资源,含面试、Vue实战项目、CSS和JavaScript电子书等。
  • 回复「知识点」下载高清JavaScript知识点图谱

每日分享有用的前端开发知识,加我微信:caibaojian89 交流