jQuery Mobile中的button按钮组件基础使用教程


Posted in Javascript onMay 23, 2016

一.Button 组件及 jQuery Mobile 如何丰富组件样式
在 jQuery Mobile 里,可以通过给任意链接添加 data-role=“button” 来产生一个 button 组件,jQuery Mobile 会追加一定的样式到链接,值得注意的是,jQuery Mobile 在给组件元素追加样式时不一定只在原有的元素上添加 CSS 和 Javascript 响应,一般还会追加一些新的元素使到组件的样式更接近于原生的 App 组件样式。下面给出一个例子:
这是一个添加了 data-role=“button” 属性的链接,原 HTML 如下

<a href="#page2" data-role="button">Link button</a>

在浏览器上显示的样式如下:

jQuery Mobile中的button按钮组件基础使用教程

这时用 DOM 查看工具查看实际得到的 HTML ,可以发现 jQuery Mobile 不仅给原来的 a 元素添加了 CSS 以丰富按钮样式,还另外追加了一些 HTML 使到样式更加丰富,当然这个部分由 jQuery Mobile 自动完成,并不需要开发者操心太多。

jQuery Mobile中的button按钮组件基础使用教程

注:带链接的按钮元素和表单中的 button 元素会被自动渲染,无需另外添加 data-role="button" 属性。
二.带图标按钮
jQuery Mobile 允许开发者通过在链接中添加 data-icon="" 属性来为 button 组件添加一个标准的 Web 图标,并且支持通过 data-iconpos="" 属性设置图标相对于文字的位置( top, bottom, right ,默认为 left )。

<a href="#page2" data-role="button" data-icon="check">Check</a>

jQuery Mobile中的button按钮组件基础使用教程

<a href="#page2" data-role="button" data-icon="check" data-iconpos="top">Check</a>

jQuery Mobile中的button按钮组件基础使用教程

data-icon 属性的可取值(来源于 jQuery Mobile 中文手册)

jQuery Mobile中的button按钮组件基础使用教程

.按钮组
如果你希望把一些按钮放到一个容器内,构建一个导航之类的独立部件(按钮组),可以将按钮放到一个容器内并给容器设置 data-role="controlgroup" 属性,如果希望得到水平式的按钮组,则添加 data-type="horizontal" 属性到容器里。

<div data-role="controlgroup">
  <a href="#page2" data-role="button">是</a>
  <a href="#page2" data-role="button">否</a>
  <a href="#page2" data-role="button">取消</a>
</div>

jQuery Mobile中的button按钮组件基础使用教程

四.其他按钮组件可用属性
1. data-theme=“” , 所有的 jQuery Mobile 组件均支持该属性,用于设置组件的颜色, 该属性默认有五个值 a, b, c, d, e,分别代表由深到浅五种颜色,另外开发者还可以通过在 CSS 里添加相应的 Class 来自定义颜色。
2. data-inline="" ,内联按钮,button 组件添加该属性后会自动改成内联的形式, jQuery Mobile 会给链接添加 display: inline-block 的 CSS ,让链接按照文字的长度来控制自身长度,并且可以与其他内联元素共行。
五.按钮绑定事件
我们以例子来讲,直接上代码:

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.css">
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js"></script>
</head>
<body>
<div data-role="page" id="pageone">
 <div data-role="header">
 <h1>组合按钮</h1>
 </div>
 <div data-role="content">
  <div data-role="controlgroup" data-type="horizontal">
  <p>水平组合按钮:</p>
  <a href="#" data-role="button" id="btn1">我绑定事件了</a>
  <a href="#" data-role="button" id="btn2">方法2绑定事件</a>
  <a href="#" data-role="button" id="btn3">按钮 3 blur</a>
  </div><br>
  <div data-role="controlgroup" data-type="vertical">
  <p>垂直组合按钮 (默认):</p>
  <a href="#" data-role="button">按钮 1</a>
  <a href="#" data-role="button">按钮 2</a>
  <a href="#" data-role="button">按钮 3</a>
  </div>
 <p>内联按钮且不带圆角:</p>
 <a href="#" data-role="button" data-inline="true">按钮 1</a>
 <a href="#" data-role="button" data-inline="true">按钮 2</a>
 <br>
 <a href="#" data-role="button" data-inline="true" data-corners="false">按钮 1</a>
 <a href="#" data-role="button" data-inline="true" data-corners="false">按钮 2</a>
 <p>内联按钮:普通与迷你</p>
 <a href="#" data-role="button" data-inline="true">按钮 1</a>
 <a href="#" data-role="button" data-inline="true">按钮 2</a>
 <br>
 <a href="#" data-role="button" data-inline="true" data-mini="true">按钮 1</a>
 <a href="#" data-role="button" data-inline="true" data-mini="true">按钮 2</a>
 <div data-role="footer">
 <h1>底部文本</h1>
 </div>
</div> 
<script type="text/javascript">
  //先解绑,再绑定
  $('#btn1').unbind().bind('click', function() {
   alert('我绑定事件了');
  });
  //on直接绑定
  $('#btn2').on('click', function() {
   alert('on直接绑定事件了');
  });
  //on直接绑定失去焦点的事件
  $('#btn3').on('blur', function() {
   alert('on直接绑定失去焦点的事件了');
  });

</script>
</body>
</html>

看看运行效果:

jQuery Mobile中的button按钮组件基础使用教程

  • hashchange 启用可标记 #hash 历史,哈希值会在一次独立的点击时发生时变化,比如一个用户点击后退按钮,会通过 hashchange事件进行处理。
  • navigate 包裹了 hashchange 和 popstate 的事件
  • orientationchange 方向改变事件,在用户垂直或者水平旋转移动设备时触发。
  • pagebeforechange 在页面切换之前,触发的事件。使用$.mobile.changePage()来切换页面,此方法触发2个事件,切换之前的pagebeforechange事件,和切换完成后pagechange(成功)或者pagechangefailed(失败)。
  • pagebeforecreate 页面初始化时,初始化之前触发。
  • pagebeforehide 在页面切换后旧页面隐藏之前,触发的事件。
  • pagebeforeload 在加载请求发出之前触发
  • pagebeforeshow 在页面切换后显示之前,触发的事件。
  • pagechange 在页面切换成功后,触发的事件。使用$.mobile.changePage()来切换页面,此方法触发2个事件,切换之前的pagebeforechange事件,和切换完成后pagechange(成功)或者pagechangefailed(失败)。
  • pagechangefailed 在页面切换失败时,触发的事件。使用$.mobile.changePage()来切换页面,此方法触发2个事件,切换之前的pagebeforechange事件,和切换完成后pagechange(成功)或者pagechangefailed(失败)。
  • pagecreate 在页面创建成功之后,触发的事件,但增强完成之前。
  • pagehide 在页面切换后老页面隐藏之后,触发的事件。
  • pageinit 在页面页面初始化时,触发的事件。
  • pageload 在页面完全加载成功后触发。
  • pageloadfailed 如果页面请求失败触发。
  • pageremove 在窗口视图从 DOM 中移除外部页面之前触发。
  • pageshow 在过渡动画完成后,在"到达"页面触发。
  • scrollstart 当用户开始滚动页面时触发。
  • scrollstop 当用户停止滚动页面时触发。
  • swipe 当用户在元素上水平滑动时触发。
  • swipeleft 当用户从左划过元素超过 30px 时触发。
  • swiperight 当用户从右划过元素超过 30px 时触发。
  • tap 当用户敲击某元素时触发。
  • taphold 当元素敲击某元素并保持一秒时触发。
  • throttledresize 启用可标记 #hash 历史记录
  • updatelayout 由动态显示/隐藏内容的 jQuery Mobile 组件触发。
  • vclick 虚拟化的 click 事件处理器
  • vmousecancel 虚拟化的 mousecancel 事件处理器
  • vmousedown 虚拟化的 mousedown 事件处理器
  • vmousemove 虚拟化的 mousemove 事件处理器
  • vmouseout 虚拟化的 mouseout 事件处理器
  • vmouseover 虚拟化的 mouseover 事件处理器
  • vmouseup 虚拟化的 mouseup 事件处理器
Javascript 相关文章推荐
网页的标准,IMG不支持onload标签怎么办
Jun 29 Javascript
使用隐藏的new来创建对象
Mar 29 Javascript
时间戳转换为时间 年月日时间的JS函数
Aug 19 Javascript
用js代码改变单选框选中状态的简单实例
Dec 18 Javascript
javascript轻量级模板引擎juicer使用指南
Jun 22 Javascript
js通过指定下标或指定元素进行删除数组的实例
Jan 12 Javascript
使用store来优化React组件的方法
Oct 23 Javascript
使用typescript开发angular模块并发布npm包
Apr 19 Javascript
手把手教你vue-cli单页到多页应用的方法
May 31 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
Nov 20 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
May 02 Javascript
jQuery实现动态加载瀑布流
Sep 01 jQuery
jQuery实现页面评论栏中访客信息自动填写功能的方法
May 23 #Javascript
jQuery插件formValidator实现表单验证
May 23 #Javascript
超链接怎么正确调用javascript函数
May 23 #Javascript
以WordPress为例讲解jQuery美化页面Title的方法
May 23 #Javascript
jQuery中选择器的基础使用教程
May 23 #Javascript
基于BootStrap的图片轮播效果展示实例代码
May 23 #Javascript
AngularJS上拉加载问题解决方法
May 23 #Javascript
You might like
暴雪前总裁遗憾:没尽早追赶Dota 取消星际争霸幽灵
2020/03/08 星际争霸
图书管理程序(三)
2006/10/09 PHP
Youku 视频绝对地址获取的方法详解
2013/06/26 PHP
php中get_defined_constants函数用法实例分析
2015/05/12 PHP
php实现随机生成易于记忆的密码
2015/06/19 PHP
层序遍历在ExtJs的TreePanel中的应用
2009/10/16 Javascript
jQuery EasyUI API 中文文档 - EasyLoader 加载器
2011/09/29 Javascript
JavaScript将取代AppleScript?
2014/09/18 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
2014/10/14 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
JavaScript生成SQL查询表单的方法
2015/08/13 Javascript
js实现数组冒泡排序、快速排序原理
2016/03/08 Javascript
JavaScript中的对象继承关系
2016/08/01 Javascript
基于LayUI实现前端分页功能的方法
2017/07/22 Javascript
详解nuxt sass全局变量(公共scss解决方案)
2018/06/27 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
Vue——前端生成二维码的示例
2020/12/19 Vue.js
Python 的 with 语句详解
2014/06/13 Python
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
python win32 简单操作方法
2017/05/25 Python
TensorFlow神经网络优化策略学习
2018/03/09 Python
python实现中文文本分句的例子
2019/07/15 Python
pytorch实现focal loss的两种方式小结
2020/01/02 Python
纯CSS实现聊天框小尖角、气泡效果
2014/04/04 HTML / CSS
亚马逊印度站:Amazon.in
2017/10/15 全球购物
给校长的建议书200字
2014/05/16 职场文书
敬老院标语
2014/06/27 职场文书
家长学校教学计划
2015/01/19 职场文书
团代会闭幕词
2015/01/28 职场文书
学习雷锋精神倡议书
2015/04/27 职场文书
埃及王子观后感
2015/06/16 职场文书
开工典礼致辞
2015/07/29 职场文书
《黄山奇石》教学反思
2016/02/18 职场文书
巧用 -webkit-box-reflect 倒影实现各类动效(小结)
2021/04/22 HTML / CSS
Redis基本数据类型哈希Hash常用操作命令
2022/06/01 Redis
Go中使用gjson来操作JSON数据的实现
2022/08/14 Golang