插件的创建和使用

 第三方插件可在:http://jquerymobile.com/resources/#Plugins中查找,jQuery Mobile支持多种形式的扩展:

    • 主题:一个CSS文件,或一组图片,或者两者兼容。
    • 插件:一个JavaScript文件,一个css文件,为框架增添新的部件(data-role)。
    • 扩展:一个JavaScript文件,为现有的jQuery Mobile部件和核心功能增加新的行为。

   创建插件要认识到以下问题:

    • 用户在使用插件时,只需在页面插入一个JavaScript文件和一个css文件。
    • 插件应能无缝地兼容现有的自定义命名空间以及主题切换。
    • 插件应和框架中的其他部分一样自动进行初始化
    • 尽可能地避免使用通用的名字来命名自定义的data-role,以避免与框架后续版本中的命名发生冲突。

 基础模板

    • 自动初始化,即借助data-role或者带有语义的html5代码的声明,自动地初始化部件。
    • 显示地通过jQuery语法调用部件的构造函数进行初始化。例如:$("#myelement").widgetname();

 部件的模板:

(function($){

//把所有的代码封装在这个方法中以确保$是jQuery对象的引用

//部件的定义

$.widget("mobile.ourWidgetName",$.mobile.widget,{

options:{

//创建部件默认的选项。部件的各项配置。

},

_create:function(){

//构造函数

},

//公有方法

enable:function(){

//启用部件

},

disable:function(){

//禁用部件

},

refresh:function(){

//刷新部件

}

})

});//部件定义结束

//自动初始化代码

$(document).bind("pagecreate",function(event){

//找到相应的data-role然后应用初始化方法

$(event.target).find(":jqmData(role=‘ourWidgetName‘)").ourWidgetName();

});

}(jQuery));

   自我理解:_create方法是部件的构造器。它只在初始化的时候被调用。因为这个是扩展,所以肯定有继承,父类的方法中有create方法,方法加个_变成子类的用法很常见。

 

 实例:

例如定义一个dynamicimage。两种实现方式:

    第一种是找到页面上的所有img元素自动地应用dynamicimage调整大小。

    第二种是定义一个新的data-role,叫做dynamicimage,只针对data-role为dynamicimage的img元素来调整大小。

  通常需要实现refresh、enable和disable这三个jQuery Mobile里的通用方法。例如,程序通过JavaScript改变图片的URL后,需要用$("#ourImag").dynamicimage("refresh")调用公有方法refresh来触发部件的刷新行为。

  

 1 (function($){
 2     //小部件的定义
 3     $.widget("mobile.dynamicimage",$.mobile.widget,{
 4         options:{
 5             margin:0,width:100
 6         },
 7         _create:function(){
 8             this._loadURL();
 9         },
10         //私有方法
11         _loadURL:function(){
12             //this.element就是我们的img元素
13             var url;//原来定义Seccha IO Src服务的URl
14             url="http://src.sencha.io/";
15             var parameters="";
16             if(!isNaN(this.options.width)){
17                 parameters+="X"+this.options.width;
18             }
19             if((!isNaN(this.options.margin))&&this.options
20             .margin>0){
21                 parameters+="-"+this.options.margin;
22             }
23             if(parameters.length>0){
24                 url+=parameters+"/";
25             }
26             //Sencha Io 需要提供URl的绝对路径
27             //使用jqmDat而不是attr,可以使代码兼容自定义命名空间。元素中所有
28             //data-*属性都会自动匹配到部件对象的this.optons;
29             var originalUrl=$(this.element).jqmData("src");
30             if(originalUrl.length>1){
31                 var newUrl="";
32                 if($.mobile.path.isAbsoluteUrl(originalUrl)){
33                     //图片的Url是绝对路径
34                     newUrl=originalU;
35                 }else{
36                     //图片url是相对路径,我们计算绝对路径
37                     var baseUrl=$.mobile.path.parseUrl(location.href);
38                     var baseUrlWithoutScript=baseUrl.protocol+"//"+baseUrl.host+baseUrl.directory;
39                     newUrl=$.mobile.path.makeUrlAbsolute(originalUrl,baseUrlWithoutScript);
40                 }
41                 url+=newUrl;
42                 $(this.element).attr("src",url);
43             }
44         },
45         //公有方法
46         enable:function(){
47             //启用小部件
48             $(this.element).attr(‘disabled‘,‘‘);
49         },
50         disable:function(){
51             //禁用小部件
52             $(this.element).removeAttr("disable");
53         },
54         refresh:function(){
55             //刷新小部件
56             this._loadURL();
57         }
58     });
59     //小部件定义结束
60     //自动化初始化代码,页面会查找所有data-role=“dynamicimage”属性的元素来创建dynamicimage实例。
61     $(document).bind(‘pagecreate‘,function(event){
62         //找到相应的data-role,调用dynamicimage的构造器
63         $(event.target).find("img:jqmData(role=‘dynamic-image‘)").dynamicimage();
64     });
65 }(jQuery));

使用方法:

<script src="jquery.mobile-dynamicimage-1.0.js"></script>

我们只需创建配置正确参数的img元素就可以了:

<!--占据屏幕全部宽度的图片-->

<img data-src="images/photo.png" data-role="dynamic-image">

<!--占据屏幕40%宽度的图片-->

<img data-src="images/photo.png" data-role="dynamic-image" data-width="40">

  <!--占据屏幕100%宽度并且带20个像素的外边距的图片-->

<img data-src="images/photo.png" data-role="dynamic-image" data-width="40" data-margin="50">

插件推荐:

分页插件:http://filamentgroup.com/lab/jquery_mobile_pagination_plugin,可以对内容(比如图片)进行分页。

使用:创建一个data-role="pagination"的ul元素。每个jQuery Mobile页面都应该包含一个分页小部件。

  例子:

<ul data-role="pagination">

<li class="ui-pagination-prev"><a href="1.html">prev</a></li>

<li class="ui-pagination-next"><a href="2.html">next</a></li>

</ul>

  其它:

  类似于ios应用程序底部的标签导航:http://www.stokkers.mobi/valuables/bartender.html

DateBox插件:http://dev.jtsage.com/jQM-DateBox

Simple Dialog插件(弹窗):http://dev.jtsage.com/jQM-SimpleDialog

Action Sheet插件(模拟弹出菜单):https://github.com/hiroprotagonist/jquery.mobile.actionsheet

供平板使用的插件:

    SplitView插件可以在:http://asyraf9.github.com/jquery-mobile找到,利用它可以把页面分成两块区域,这两个区域也叫做面板。

   MultiView插件:http://www.stokkers.mobi/valuables/multiview/page1.html和上面的差不多。但包括四个面板:菜单面板;主面板;全屏面板(可选,横屏时可用);弹出面板(可选,竖屏时可用);

兼容的jQuery UI插件:

photoswipt(http://photoswipe.com),创建照片画廊;

Diapo(http://www.pixedelic.com/plugins/diapo),很棒的css动画效果的幻灯片画廊;

jQuery UI Maps(http://code.google.com/p/jquery-ui-map),在移动web应用中集成Google地图的插件;

MobiScroll(http://www.mobiscroll.com):使用步进器或者轮盘的方式进行事件日期的选择;

时间: 2024-07-28 19:47:13

插件的创建和使用的相关文章

【IDE_IntelliJ IDEA】IDEA中使用Junit插件自动创建测试用例到test目录

第一步 从插件资源库中搜索JunitGenerator V2.0插件并安装 第二步 配置测试用例的生成目录 1.打开File->Settings 2.搜索junit,找到JUnit Generator 3.Properties选项卡里的Output Path为测试用例生成的目录,修改为test目录:${SOURCEPATH}/../../test/java/${PACKAGE}/${FILENAME} 4.切换到JUnit 4选项卡,可以修改生成测试用例的模板,比如类名.包名等 第三步 为指定的

myeclipse10安装了activiti插件后创建BPMN 文件时报错,

以上错误需要,下载一个补丁. 补丁地址:http://www.shareyx.com/blog/2 补丁的安装可以参考: http://jingyan.baidu.com/article/dca1fa6fba6a0af1a4405290.html 解决办法2: 看截图你myeclipse10吗,myeclipse对activiti的插件集成不怎么好. 建议用eclipse kepler以上的版本画图,或者activiti不是有web版的画图工具吗,不用插件也行

eclipse安装scala插件及创建maven工程

Spark编译的目前都是基于Scala 2.10.4的,安装Scala插件版本也是选择2.10.4,否则eclipse会报spark的jar包和scala版本不兼容的错误. Scala IDE for Eclipse 不同的Eclipse版本对应插件也的不同 For Scala 2.11.2 http://download.scala-ide.org/sdk/helium/e38/scala211/stable/site For Scala 2.10.4 http://download.scal

eclipse 中设置maven插件、创建Java工程以及创建web工程

6款强大的 jQuery 网页布局创建及优化插件

本文将为您介绍6款功能强大的jQuery插件,它们能够帮助您方便快捷地创建复杂的网络布局并进行优化. 1.UI.Layout 该插件可以创建任何你想要的UI形式:包括从简单的标题或侧边栏,到一个包含工具栏,菜单,帮助面板,状态栏,子表格等复杂的应用.     2.jQUery Masonry 动态布局jQuery插件,折叠式CSS浮动面板. 3.jLayout 可提供四种网页元素布局算法.     4.jQuery pageSlide 该插件灵感来自于Aza Raskin的UI工作中.他最近发表

WordPress插件制作教程(一): 如何创建一个插件

上一篇还是按照之前的教程流程,写了一篇WordPress插件制作教程概述,从这一篇开始就为大家具体讲解WordPress插件制作的内容.这一篇主要说一下插件的创建方法. 相信大家都知道插件的安装文件在什么地方吧,没错就在WP-Content->plugins里面,我们所安装的插件都存放在了这个文件夹里面.当我们刚开始搭建好WordPress网站的时候,里面会默认提供两个插件,一个是Akismet(过滤垃圾评论插件)和一个hello插件(显示歌词的插件).我们可以打开hello.php这个文件,这

物联网架构成长之路(4)-EMQ插件创建

1. 说明 以下用到的知识,是建立在我目前所知道的知识领域,以后如果随着知识的拓展,不一定会更新内容.由于不是EMQ公司的人,EMQ的文档又很少,很多知识点都是靠猜的.2. 一些资料 架构设计 http://emqtt.com/docs/v2/design.html 扩展插件 http://emqtt.com/docs/v2/plugins.html  一些自带的插件3. 写插件 经过上一篇博客讲解的,编译_relx后,在deps目录下就会包含了所有依赖包以及插件包,在这个目录下有个emq_pl

创建jq插件步骤

无意看了这篇<jQuery插件开发精品教程,让你的jQuery提升一个台阶>文章,现在做一下总结. 一.jQuery插件的创建可以有三种方法 1.通过$.extend()来扩展jQuery 2.通过$.fn 向jQuery添加新的方法 3.通过$.widget()应用jQuery UI的部件工厂方式创建 方法1太简单,创建后通过$.myfunction()方式调用,不能对指定元素调用. 方法3相对于方法2太复杂. 方法2就是常用的创建jq插件的方法.可以对指定元素进行操作.例如$('#titl

创建一个android项目与创建一个android虚拟设备

创建一个android项目 Navigator面板区点击右键-->New-->Android Application Project,打开New Android Applicaton窗口.输入Application Name(应用程序的名称,就是显示在手机上的名称,比如:微信),Project Name(项目名称,一般显示在eclipse上的项目名称),Package Name(指定它的java包名,比如:com.qq.weixin).Minimum Required SDK表示运行应用程序所