jQuery插件开发初探

简介:

最简单的插件

$.fn.changeStyle = function (colorStr) {
    $(this).css('color',colorStr);
}

应用如下:

<!DOCTYPE HTML>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>jquery插件开发</title>
</head>
<body>
    <p>Hello jQuery!</p>
</body>

<script type="text/javascript" src="./js/jquery.min.js"></script>
<script type="text/javascript" src="./js/jquery.extend.js"></script>

<script type="text/javascript">
    $('p').changeStyle('red');
</script>
</html>

422101-20170119115002000-4352543.png

但是如果想连续使用,就不好用了,比如:

<!DOCTYPE HTML>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>jquery插件开发</title>
</head>
<body>
    <p>Hello jQuery!</p>
</body>

<script type="text/javascript" src="./js/jquery.min.js"></script>
<script type="text/javascript" src="./js/jquery.extend.js"></script>

<script type="text/javascript">
    $('p').changeStyle('red').css('font-size','20px');
</script>
</html>

这里的设置字体大小就没有效果了。

需要简单处理一下上面的拓展程序。

$.fn.changeStyle = function (colorStr) {
    this.css('color',colorStr);
    return this;
}

加上return this;就可以了。

进一步扩展

(function ($) {
    $.fn.changeStyle = function (colorStr) {
        this.css('color',colorStr);
        return this;
    }
}(jQuery));

这样处理会更加安全,防止被污染

支持更多参数

(function ($) {
    $.fn.changeStyle = function (colorStr,fontSize) {
        this.css('color',colorStr).css('font-size',fontSize);
        return this;
    }
}(jQuery));

这里传递了两个参数

<!DOCTYPE HTML>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>jquery插件开发</title>
</head>
<body>
    <p>Hello jQuery!</p>
</body>

<script type="text/javascript" src="./js/jquery.min.js"></script>
<script type="text/javascript" src="./js/jquery.extend.js"></script>

<script type="text/javascript">
    $('p').changeStyle('red','25px');
</script>
</html>

灵活处理参数

(function ($) {
    $.fn.changeStyle = function (option) {
        this.css('color',option.colorStr).css('font-size',option.fontSize);
        return this;
    }
}(jQuery));

这里用json对象传递参数,更加灵活。

<!DOCTYPE HTML>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>jquery插件开发</title>
</head>
<body>
    <p>Hello jQuery!</p>
</body>

<script type="text/javascript" src="./js/jquery.min.js"></script>
<script type="text/javascript" src="./js/jquery.extend.js"></script>

<script type="text/javascript">
    $('p').changeStyle({colorStr:'red',fontSize:'25px'});
</script>
</html>

支持默认参数处理

(function ($) {
    $.fn.changeStyle = function (option) {
        var defaultSetting = {colorStr:'blue',fontSize:'12px'};
        var setting        = $.extend(defaultSetting,option);
        this.css('color',setting.colorStr).css('font-size',setting.fontSize);
        return this;
    }
}(jQuery));

这里会合并给定的参数和默认的参数,
如果只传一个参数,就会启用默认的参数。

<!DOCTYPE HTML>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>jquery插件开发</title>
</head>
<body>
    <p>Hello jQuery!</p>
</body>

<script type="text/javascript" src="./js/jquery.min.js"></script>
<script type="text/javascript" src="./js/jquery.extend.js"></script>

<script type="text/javascript">
    $('p').changeStyle({fontSize:'25px'});
</script>
</html>

422101-20170119111901921-1474126400.png

后记

也可以这样处理

(function ($) {
    $.fn.extend({
        changeStyle:function (option) {
            var defaultSetting = {colorStr:'blue',fontSize:'12px'};
            var setting        = $.extend(defaultSetting,option);
            this.css('color',setting.colorStr).css('font-size',setting.fontSize);
            return this;

        }
    });
}(jQuery));

$.fn $.fn.extend $.extend 的理解

(function ($) {
    $.fn.extend({
        changeStyle: function (option) {
            var defaultSetting = {colorStr: 'blue', fontSize: '12px'};
            var setting = $.extend(defaultSetting, option);
            this.css('color', setting.colorStr).css('font-size', setting.fontSize);
            return this;

        }
    });

    // 静态方法,直接通过$调用,不可以通过元素调用
    $.extend({
        min: function (a, b) {
            return a < b ? a : b;
        },

        max: function (a, b) {
            return a > b ? a : b;
        }
    });

    // 可以通过元素调用
    $.fn.extend({
        min: function (a, b) {
            return a < b ? a : b;
        },

        max: function (a, b) {
            return a > b ? a : b;
        }
    });
}(jQuery));

调用如下,

<!DOCTYPE HTML>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>jquery插件开发</title>
</head>
<body>
    <p>Hello jQuery!</p>
</body>

<script type="text/javascript" src="./js/jquery.min.js"></script>
<script type="text/javascript" src="./js/jquery.extend.js"></script>

<script type="text/javascript">
    $('p').changeStyle({fontSize:'25px'});
    $.min('3','5'); // 3
    $('p').min('3','5'); // 3
</script>
</html>
1. $.fn 和 $.fn.extend 都是针对成员进行扩展的,$.extend扩展的是静态方法。
2. jQuery.fn.extend拓展的方法,你得用在jQuery对象上面才行啊!
3. jQuery.extend(),是扩展的jQuery这个类。


本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/6305984.html,如需转载请自行联系原作者
相关文章
|
8月前
|
JavaScript
jQuery插件开发
jQuery插件开发
52 0
|
JavaScript
jQuery插件
jQuery插件
119 0
|
前端开发 JavaScript iOS开发
8款超赞的最新jQuery插件工具
jQuery是迄今为止我最喜欢的Javascript框架,开发者用jQuery创造出惊人的视觉效果,以及处理数据,等等。 在这篇文章中,我给所有web开发人员推荐8款超赞的jQuery插件工具。 1.jQuery Mobile 由于iPhone和BlackBerry移动设备的普及,网络趋向于移动,jQuery Mobile是一个完整的框架,让您轻松地创建移动网站。
1117 0
|
JavaScript C# 前端开发
|
JavaScript 知识图谱
|
XML 前端开发 JavaScript
|
Web App开发 JavaScript 前端开发
|
JavaScript 前端开发

热门文章

最新文章