【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.9.Progressbar控件

时间:2021-10-02 15:33:57

Progressbar控件用来显示任意进程的完成百分比。

  • 默认安装启用
  • 配置选项
  • 控件暴露的事件API
  • progressbar暴露的独一无二的方法
  • 一些现实生活的例子

当前版本中,我们或系统必须明确进度的总量。

由外部<div>容器和 内部<div>容器构成。内部的<div>用来高亮当前进度。

1 安装启用默认的 progressbar

$(function(){ $("#myProgressbar").progressbar(); }); </script>

在例子中,我们使用了<div>元素。但是任何 块级 的元素  block-level elements ,比如 <a> ,也能使用。控件会在初始化时,给这个指定的元素添加一个代表progressbar的值得嵌入<div>元素。

这个控件,会像其他控件一样,填满它的外层容器。组件会自动给外层容器和内层<div>添加一系列的属性和classnames。

ARIA-compliant 这个附加的属性也会被添加到控件。使得控件完全支持浏览者使用辅助技术访问。

2 progressbar的配置选项

Option Default Value Used to…
disabled false 禁用控件
Value 0 用百分率的方式设置控件的值

2.1 设置 progressbar 的值

}

value选项通过一个整数,以百分比的方式设置内层<div>的宽度。

3 progerssbar的event API

Event Fired when…
create 当控件初始化后
change 控件值变化
complete 控件的值达到100%
});

我们首先为存储progressbar的选择器,然后为 change event 定义一个 event handler 。在这个回调函数中,我们首先获得progressbar的最后更新的值。字 event handler中,我们可以使用 $(this) 来选择 progressbar。

提供的值要小于等于100,我们检查这个页面上是否已经有一个元素包含 id=value 。如果这里没有,我们就新建一个 <span> 元素,并且设置它的text和当前的位置。我们同样给他一个id 和 Position ,所以它显示在progressbar的里面。如果元素已经存在,我们只需要将他的text设为新值。

当点击button时,首先使用 option 方法的 getter 模式,得到 progressbar 的当前值。

也可以使用 jQuery 的 bind() 方法,在事件的名字前加上控件的名字作为前缀,例如 progressabarchange。

4 Progressbar 的方法

除了所有库组件都有的 destroy disable,enalbe,option方法,progressbar还有一个 value 方法,它可以以捷径的方式使用 option 方法,设置progressbar的值。

});

5 用户发起进展 User initiated progress

在这个最基础的等级,在用户交互中,我们能手动更新progressbar。我们可以指定一个向导形式的 表单,它拥有几个步骤来完成。在每个步骤,我们可以手动增加progressbar,让用户知道他们完成了多少。

h1, h2 { font-family:Georgia; font-size:140%; margin-top:0;} h2 { margin:20px 0 10px; font-size:100%; text-align:left;} p { margin:0; font-size:75%; position:absolute; left:30px; top:60px; font-weight:bold; } #amount { position:absolute; right:30px; top:60px; font-size:80%; font-weight:bold; } #thanks { text-align:center;} #thanks p { margin-top:48px; font-size:160%; position:relative; left:0; top:0; } form { height:265px; position:relative;} .form-container { width:400px; margin:0 auto; position:relative; font-family:Verdana; font-size:80%; padding:20px; background-color:#e0e3e2; border:1px solid #abadac; } .form-panel { width:400px; height:241px; position:absolute; top:0; left:0;} fieldset { width:397px; height:170px; margin:0 auto; padding:22px 0 0; border:1px solid #abadac; background-color:#ffffff; } label { width:146px; display:block; float:left; text-align:right; padding-top:2px; margin-right:10px; } input, textarea { float:left; width:200px; margin-bottom:13px; } button { float:right;} });

6 使用 progressbar 的富 uploads

HTML5 文件 API,异步 upload 文件,在文件被上传时,使用 onprogress 事件更新 progressbar 。尽管 onprogress 事件被定义在 官方 W3C 规格说明书中,但目前仅被Firefox 和 webkit 实现。 getAsBinary() 方法只有 Firefox 3.5+有, webkit 浏览器没。