以Accordion为例
1、在base.js定义一个对象,这样可以和JQuery对象区分开,用户使用组件时比较清晰一点,也可以在这里引用多个库。

var JGUI = J = {
version : '0.01',
$ : window.jQuery
};

2、Accordion.js修改Init,fold,unfold如下,之前全局方法,现在改成下面的写法,里边的selector要换成$(this)。

/**
* Accordion封装
*/
J.Accordion = (function($) {
init = function(selector,p_options, p_datas, p_param) {
return selector.each(function() {
var datas = selector.extend(
{
_sumdelta: 0,
_mouseintervalhandle: undefined,
_startmousewheeldatetime: null
},
p_datas
);
selector.data("datas", datas);
});
};
//折叠
fold = function(selector) {
return selector.each(function() {
selector
.find(".jgui-accordion-navitem")
.siblings("dd")
.slideUp();
selector.find(".jgui-accordion-navitem span").hide();
selector.find(".jgui-accordion-navitem .jgui-accordion-navitem-more").hide();
});
};
//展开
unfold = function(selector) {
return selector.each(function() {
selector
.find(".jgui-accordion-navitem-more.expanded")
.closest(".jgui-accordion-navitem")
.siblings("dd")
.slideDown();
selector.find(".jgui-accordion-navitem span").show();
selector.find(".jgui-accordion-navitem .jgui-accordion-navitem-more").show();
});
};
return {
init : init,
fold : fold,
unfold : unfold
}
})(J.$);
J.Accordion.init($('.jgui-accordion'));//(".jgui-accordion").init();

3、示例使用方法

J.Accordion.unfold($('#menuaccordion'));

如果内部方法都不带参数的话,改为最外成传入selector的话,可以用如下写法。

J.Accordion($('#menuaccordion')).unfold();

4、说明:

(function($){})(J.$);
等价于
function a(J.$){}
a(selector)

助记:两个()()相当于(定义)+(执行)。

静态生成菜单基本上没问题了,如果使用js创建的菜单需要动态绑定,下面将解决这个问题。

另一种写法:(function($){...})(jQuery) 相当于定义后直接执行。

JGUI源码:组件及函数封装方法(7)的更多相关文章

  1. JGUI源码:从头开始,建一个自己的UI框架(1)

    开篇 1.JGUI是为了逼迫自己研究底层点的前端技术而做的框架,之前对web底层实现一直没有深入研究,有了技术瓶颈,痛定思痛从头研究, 2.虽然现在vue技术比较火,但还在发展阶段,暂时先使用JQue ...

  2. UCanCode发布升级E-Form++可视化源码组件库2015全新版 (V23.01)!

    2015年4月. 成都 UCanCode发布升级E-Form++可视化源码组件库2015全新版 (V23.01)! --- 全面性能提升,UCanCode有史以来最强大的版本发布! E-Form++可 ...

  3. UCanCode发布升级E-Form++可视化源码组件库2018全新版 !

    2018年. 成都 UCanCode发布升级E-Form++可视化源码组件库2018全新版 ! --- 全面性能提升,UCanCode有史以来最强大的版本发布! E-Form++可视化源码组件库企业版 ...

  4. UCanCode发布升级E-Form++可视化源码组件库2020全新版 !

    2020年. 中国.成都 UCanCode发布升级E-Form++可视化源码组件库2020全新版 ! --- 全面性能提升,UCanCode有史以来最强大的版本发布! E-Form++可视化源码组件库 ...

  5. UCanCode发布升级E-Form++可视化源码组件库2014 全新版 (V20.01)!

    UCanCode发布升级E-Form++可视化源码组件库2014 全新版 (V20.01)! --- UCanCode有史以来最强大的版本发布! E-Form++可视化源码组件库企业版本2014最新版 ...

  6. 读zepto源码之工具函数

    读zepto源码之工具函数 Zepto 提供了丰富的工具函数,下面来一一解读. 源码版本 本文阅读的源码为 zepto1.2.0 $.extend $.extend 方法可以用来扩展目标对象的属性.目 ...

  7. Netty 源码剖析之 unSafe.write 方法

    前言 在 Netty 源码剖析之 unSafe.read 方法 一文中,我们研究了 read 方法的实现,这是读取内容到容器,再看看 Netty 是如何将内容从容器输出 Channel 的吧. 1. ...

  8. jQuery源码分析-each函数

    本文部分截取自且行且思 jQuery.each方法用于遍历一个数组或对象,并对当前遍历的元素进行处理,在jQuery使用的频率非常大,下面就这个函数做了详细讲解: 复制代码代码 /*! * jQuer ...

  9. 痞子衡嵌入式:MCUXpresso IDE下将源码制作成Lib库方法及其与IAR,MDK差异

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是MCUXpresso IDE下将源码制作成Lib库方法及其与IAR,MDK差异. 程序函数库是一个包含已经编译好代码和数据的函数集合,这 ...

随机推荐

  1. 解决ajax跨域访问sessionid不一致问题

    根据浏览器的保护规则,跨域的时候我们创建的sessionId是不会被浏览器保存下来的,这样,当我们在进行跨域访问的时候,我们的sessionId就不会被保存下来,也就是说,每一次的请求,服务器就会以为 ...

  2. .Net Core 在Linux服务器下部署程序--(1). Windows 连接 Linux服务器

    下载Linux服务器连接软件,市面上有Putty,FinalShell等,我以FinalShell为例,下载地址为 :http://www.hostbuf.com/t/988.html,软件安装结束后 ...

  3. Elimination Game题解

    Elimination Game 这道题目出于leetcode,题目虽然很简单但是很有趣,因为有趣才能称得上游戏吧! 0x00 题目介绍 简单介绍一下题目意思 给定一个数字N(N>0),一个列表 ...

  4. 英语-TOEFL和GRE复习计划与资料

    目录 一. TOEFL (1). 阅读: 60 minutes (2). 听力: 50 minutes (3). 口语: 20 minutes (4). 作文: 60 minutes 单词准备 其他资 ...

  5. P4015 运输问题 网络流问题

    题目描述 WW 公司有 mm 个仓库和 nn 个零售商店.第 ii 个仓库有 a_iai​ 个单位的货物:第 jj 个零售商店需要 b_jbj​ 个单位的货物. 货物供需平衡,即\sum\limits ...

  6. 使用Swagger辅助开发Fabric Application的Web API

    前面的几篇博客,我们已经把Fabric环境搭建好了,也可以使用Go开发ChainCode了,那么我们在ChainCode开发完毕后,可以通过CLI来测试ChainCode的正确性,ChainCode开 ...

  7. ASP.NET Core 2.2 : 十七.Action的执行(Endpoint.RequestDelegate后面的故事)

    上一章介绍了经过路由的处理,一个请求找到了具体处理这个请求的EndPoint,并最终执行它的RequestDelegate方法来处理这个Httpcontext.本章继续这个处理进程,按照惯例,依然通过 ...

  8. selenium跳过webdriver检测并爬取天猫商品数据

    目录 简介 编写思路 使用教程 演示图片 源代码 @(文章目录) 简介 现在爬取淘宝,天猫商品数据都是需要首先进行登录的.上一节我们已经完成了模拟登录淘宝的步骤,所以在此不详细讲如何模拟登录淘宝.把关 ...

  9. 折半、快排、插入排序的Java实现

    插入排序 import java.util.Arrays; public class InsertionSort { /** * 对数组里面进行插入排序 * 参数1 数组 * 参数2 数组大小 */ ...

  10. PY3_线程红绿灯

    # Author:jum_# event 事件监测 红灯停绿灯行 线程标志位# 事件主要提供了三个方法wait.clear.set# clear:将“Flag”设置为False#set:将“Flag” ...