`
luozhonghua2014
  • 浏览: 62334 次
文章分类
社区版块
存档分类
最新评论

自定义构建jquery插件实验(2)

 
阅读更多

//简单的

test.js

;(function($){
	
  $.fn.getData=function(options){
	  return this.append(options);
  }
	
	
})(jQuery);

test.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type='text/javascript' src='http://code.jquery.com/jquery-1.7.1.js'></script>
<script type='text/javascript' src='../js/test.js'></script>
<title>Insert title here</title>
<script type="text/javascript">
   $(function(){
	   $("span").getData("这是我第一个自定义插件");
   });
</script>
</head>
<body>
<span></span>
</body>
</html>


//来个复杂点的

test2.js

 (function($) {
    debugger;
    // 在我们插件容器内,创造一个公共变量来构建一个私有方法
    var privateFunction = function() {
        // code here
    }
 
    // 通过字面量创造一个对象,存储我们需要的共有方法
    var methods = {
        // 在字面量对象中定义每个单独的方法
        init: function() {
 
            // 为了更好的灵活性,对来自主函数,并进入每个方法中的选择器其中的每个单独的元素都执行代码
            return this.each(function() {
                // 为每个独立的元素创建一个jQuery对象
                var $this = $(this);
 
                // 执行代码
                // 例如: privateFunction();
            });
        },
        destroy: function() {
            // 对选择器每个元素都执行方法
            return this.each(function() {
                // 执行代码
            });
        }
    };
 
    $.fn.pluginName = function() {
        // 获取我们的方法,遗憾的是,如果我们用function(method){}来实现,这样会毁掉一切的
        var method = arguments[0];
 
        // 检验方法是否存在
        if(methods[method]) {
 
            // 如果方法存在,存储起来以便使用
            // 注意:我这样做是为了等下更方便地使用each()
            method = methods[method];
 
        // 如果方法不存在,检验对象是否为一个对象(JSON对象)或者method方法没有被传入
        } else if( typeof(method) == 'object' || !method ) {
 
            // 如果我们传入的是一个对象参数,或者根本没有参数,init方法会被调用
            method = methods.init;
        } else {
 
            // 如果方法不存在或者参数没传入,则报出错误。需要调用的方法没有被正确调用
            $.error( 'Method ' +  method + ' does not exist on jQuery.pluginName' );
            return this;
        }
 
        // 调用我们选中的方法
        // 再一次注意我们是如何将each()从这里转移到每个单独的方法上的
        return method.call(this);
 
    }
 
})(jQuery);


test2.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type='text/javascript' src='http://code.jquery.com/jquery-1.7.1.js'></script>
<script type='text/javascript' src='../js/test2.js'></script>
<title>Insert title here</title>
<script type="text/javascript">
   $(function(){
	  // $("span").getData("这是我第一个自定义插件");
	   
	   
	   /*
	   注意这些例子可以在目前的插件代码中正确运行,并不是所有的插件都使用同样的代码结构 
	  */
	  // 为每个类名为 ".className" 的元素执行init方法
	 // $('.className').pluginName();
	  $('.className').pluginName('init');
	  $('.className').pluginName('init', {}); // 向init方法传入“{}”对象作为函数参数
	 // $('.className').pluginName({}); // 向init方法传入“{}”对象作为函数参数
	   
	  // 为每个类名为 “.className” 的元素执行destroy方法
	 // $('.className').pluginName('destroy');
	 // $('.className').pluginName('destroy', {}); // 向destroy方法传入“{}”对象作为函数参数
	   
	  // 所有代码都可以正常运行
	 // $('.className').pluginName('init', 'argument1', 'argument2'); // 把 "argument 1" 和 "argument 2" 传入 "init"
	   
	  // 不正确的使用
	  //$('.className').pluginName('nonexistantMethod');
	 // $('.className').pluginName('nonexistantMethod', {});
	 // $('.className').pluginName('argument 1'); // 会尝试调用 "argument 1" 方法
	//  $('.className').pluginName('argument 1', 'argument 2'); // 会尝试调用 "argument 1" ,“argument 2”方法
	 // $('.className').pluginName('privateFunction'); // 'privateFunction' 不是一个方法
   });
</script>
</head>
<body>
<span class="className"></span>
</body>
</html>

特别注意第二个案例,如果你看完我之前的原理还不清楚的话,请源码调试,一步一步的看清jquery源码的设计模式。





分享到:
评论

相关推荐

    jquery自定义滚动条插件

    该jQuery插件确保在Internet Explorer 8及更高版本、Firefox、Chrome、Safari和Opera等主流浏览器中都能正常工作。这使得它在广泛的用户群体中具有良好的兼容性,无论用户的设备或浏览器偏好如何,都能提供一致的...

    jquery 右键自定义上下文菜单插件

    本话题聚焦于一个jQuery插件,即"jquery 右键自定义上下文菜单插件",这个插件允许开发者为网页中的元素创建个性化的右键菜单,提供了丰富的定制选项和便捷的API接口。 首先,让我们理解一下“上下文菜单”的概念。...

    jQuery自定义数字滚动插件.zip

    jQuery自定义数字滚动插件是一种基于JavaScript库jQuery的特效实现,用于展示动态的数字滚动效果。这个插件通常被用于统计数字、计数器或实时更新的数据展示,比如页面访问量、股票价格、销售数量等。它能为网站增添...

    jQuery自定义月份选择插件

    本教程将详细讲解如何利用jQuery创建一个自定义的月份选择插件,帮助开发者提高用户体验,使得用户能方便快捷地选择日期。 首先,我们需要了解jQuery的基本用法。jQuery的核心特性是其简洁的语法,例如$(selector)....

    jquery自定义调查问卷插件

    《jQuery自定义调查问卷插件深度解析》 在IT领域,尤其在Web开发中,创建交互性强、用户体验良好的调查问卷是常有的需求。jQuery作为一款轻量级的JavaScript库,以其简洁的API和丰富的插件生态,使得实现这一功能变...

    jquery制作自定义样式登录插件

    "jquery插件"是指基于jQuery框架的扩展代码,可以轻松添加到项目中,提供额外的功能。"登录"和"注册"是此插件的核心功能,它可能包括验证用户输入、处理登录请求以及可能的注册新用户功能。"表单"是指用于收集用户...

    自定义jquery-wizard插件

    - **jquery.min.js**:这是jQuery库的最小化版本,用于提供JavaScript的基础支持,是大多数jQuery插件运行的基石。 - **jquery-wizard.1.0.js**:这是核心插件脚本,实现了Wizard的逻辑,如步骤切换、验证、事件...

    jquery 自定义扩展日期插件

    《jQuery自定义扩展日期插件详解》 在前端开发中,日期组件是不可或缺的一部分,它为用户提供了方便的日期选择和操作功能。本篇文章将详细探讨一个基于jQuery的可扩展日期插件,该插件允许在日期上进行编辑并保存,...

    jQuery支持自定义拖拽布局插件Portal.zip

    这个“jQuery支持自定义拖拽布局插件Portal.zip”文件显然是一个包含jQuery插件的压缩包,该插件允许用户在网页上创建可自定义拖放的布局。在本文中,我们将深入探讨jQuery、拖拽布局以及如何利用这种插件来增强用户...

    java源代码,主要是jquery插件的利用

    在IT行业中,JavaScript库jQuery是前端开发中广泛使用的工具,它极大地简化了DOM操作、事件处理、动画...在实际工作中,开发者需要熟悉jQuery插件的使用、自定义以及与Java后端的协作,以构建出功能丰富的Web应用程序。

    jquery插件库-jquery抽奖插件.zip

    以"jquery插件库-jquery抽奖插件"为例,这个插件可能包含一个旋转盘的HTML结构,结合CSS3的transform属性实现3D旋转效果。JavaScript部分则通过jQuery选择器获取元素,设置动画时间和旋转角度,然后绑定click事件,...

    jQuery插件开发学习

    在IT行业中,jQuery是一个广泛使用的...总的来说,学习jQuery插件开发有助于提升开发者的技能,使他们能够构建出符合项目需求的个性化组件。结合具体的实例,如`digitclock`插件,可以更好地理解和实践这些知识。

    一款支持自定义的jQuery提示插件DarkTooltip.zip

    7. **兼容性**:作为一款成熟的jQuery插件,DarkTooltip通常具有良好的浏览器兼容性,支持主流的现代浏览器和部分旧版本浏览器。 8. **文档和示例**:"使用须知.txt"文档将指导开发者如何快速上手,包括安装、初始...

    表单验证jquery插件

    **jQuery Validation Engine 插件详解** 在Web开发中,表单验证是不可或缺的一部分,它确保用户输入的数据符合预设的规则,...在实际开发中,结合使用其他jQuery插件和前端框架,能更好地构建出高效、友好的Web应用。

    jQuery自定义弹窗功能插件

    8. **插件封装**:将以上功能封装成一个可重用的jQuery插件,遵循jQuery插件开发规范,例如`$.fn.myPlugin = function(options) {...}`。这样,其他开发者可以简单地通过`$('selector').myPlugin(options)`调用来...

    很好用的Jquery插件

    2. **jQuery UI**:这是一个官方的jQuery插件集,包含了诸如拖放(Draggable)、可排序(Sortable)、可叠放(Resizable)和对话框(Dialog)等功能。它提供了一套完整的用户界面组件,使得开发者可以快速构建具有...

    利用jQuery插件构建无限级分类Tree

    总的来说,利用jQuery插件构建无限级分类Tree是一项涉及前端数据处理、DOM操作、用户交互和视觉设计的综合性任务。通过合理的设计和实现,我们可以创建出既美观又实用的Tree视图,为用户提供直观的数据导航体验。

    50个jquery插件介绍

    "50个jQuery插件介绍"这篇文档很可能包含了对各种功能强大、用途广泛的jQuery插件的详细解读,帮助开发者提升网站的用户体验和功能实现。 首先,jQuery插件是jQuery库的扩展,由社区开发者创建,用于解决特定问题或...

    [精华]网站论坛源码C# Jquery,完全自制,有很多jquery自己写的插件

    【描述】中的内容重复,但进一步强调了源码是完全自制的,并且包含了许多自定义的Jquery插件。这表明开发者不仅构建了论坛的基础框架,还可能对Jquery进行了深度定制,创建了适用于特定论坛场景的交互功能或特效。 ...

    jquery插件

    2. **多媒体播放**:jQuery插件如`jQuery.media`和`jPlayer`提供了优雅的方式来处理视频和音频播放,支持多种格式,提供自定义的播放器皮肤和控制选项,使开发者能够创建互动性强的多媒体体验。 3. **DOM操作和事件...

Global site tag (gtag.js) - Google Analytics