我的Jquery笔记:插件制作与回调函数(一)
做了一个简单的插件例子,主要来学习以下功能:
1、如何建立一个jQuery插件
2、如何初始化插件,对插件中的变量进行赋值
3、如何使用回调函数返回插件执行过程中的变量
index.html
<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script> <script type="text/javascript" src="myplugin.js"></script> </head> <body> <p class="pp1">我是红色</p> <p class="pp2">我是绿色</p> <p class="pp3">我是蓝色</p> <button class="testBtn">!看我什么颜色!</button> <script type="text/javascript"> function alertRand(data) { alert(data); } $('.testBtn').click(function(event) { $('.pp1').myplugin();//对于pp1使用的是默认的颜色,不对colour进行赋值 $('.pp2').myplugin({//对于pp2对clour赋值green,并使用回调函数 'colour': 'green' }, function(data) {//将回调函数作为一个参数,data为myplugin插件返回的randID值,并通过调用 alertRand(data);//通过调用alertRand函数显示randID } ); $('.pp3').myplugin({ 'colour': 'blue' }); }); </script> </body> </html>
myplugin.js
(function($) { $.fn.myplugin = function(options, callback) { var colour = null; var obj = this; var randID = _getRandomString(5);//获取长度为5的随机字符串 return this.each(function(index, el) { var settings = $.extend({ colour: 'red'//默认为红色 }, options); colour = settings.colour;//根据传入的颜色赋值给colour obj.css('color', colour); obj.after(//新建一个<p>来显示randID,并根据不同的颜色显示 $('<p/>') .attr('id', randID) .html(randID) .css('color', colour) ); $('#' + randID).click(function(event) {//点击新创建的<p>然后弹出对话框显示randID alert('当前id:'+$(event.target).html()+' randID:'+randID); }); if (typeof callback === 'function'){//判断传入的参数是否为函数,如果为函数将randID返回 callback(randID); } }); /* *随机字符串函数 *return String */ function _getRandomString(len) { len = len || 32; var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'; // 默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1 var maxPos = $chars.length; var pwd = ''; var i; for (i = 0; i < len; i++) { pwd += $chars.charAt(Math.floor(Math.random() * maxPos)); } return pwd; } } })(jQuery);
网页完整效果
有0条评论