http://blog.sina.com.cn/s/blog_4a60ba9c01014dea.html
創新互聯長期為上1000+客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為臨夏企業提供專業的網站建設、成都網站制作,臨夏網站改版等技術服務。擁有十余年豐富建站經驗和眾多成功案例,為您定制開發。
Jquery ui 提供了一些基本的widget,但是他提供了很好的機制來創建widget。在jquery css framework中包含了基本的css樣式(視覺和感覺諸如顏色,字體大小,圖標等),而在ui的css中,則需要定義構建widget結構的css,比如margin,padding,position等。在開發widget的時候也要盡量遵循這一原則,這樣才能很好的利用jquery theme roller來應用樣式,從而在整體上保持一致,在前面的文章中簡單的 介紹了jquery css framework。下面就簡單的介紹下jquery ui 的開發指引
Jquery的官方文檔中對此寫的很清晰。一般來說,jquery ui都是繼承自jquery.ui.widget.js這個文件的。這個文件提供了一個工廠方法來創建widget對象。其方法是$.widget(String name, Options prototype).下面簡單介紹下這個類提供的方法和屬性。在創建widget的時候將重寫這些。
destroy():將widget實例從dom對象上移除,在開發widget的時候一般此方法是必須的。就是移除你自己在dom element上添加的樣式和行為以及dom結構
options:在這里面保存的是widget的配置信息,在創建widget的時候需要設置一些配置參數。
element:就是widget作用的dom對象。
enable()和disable()這兩個方法就是禁用和啟用widget的。其實是修改options.disabled。
還有兩個私有方法是創建widget的時候要重寫的。
_create() 這個方法就是創建widget的方法,在頁面調用widget的時候,就會執行此方法,來構建widget。Widget的絕大大多數行為和結構都是在這里創建的。
_init() 這個方法大多數時候不會被重寫,這個方法在構建widget的時候在_create后執行。從相關的文檔上查詢到:
_create()方法在widget構建的時候執行,而_init()方法在構建和重新初始化的時候執行。而destroy方法則是在移除widget的時候被執行。在widget中,所有的私有方法都將加以"_"前綴
_setOption():此方法提供了options的屬性的設置,一般情況下如果options里面的參數不需要特殊處理(校驗,類型轉換,以及設置屬性的時候觸發某一操作等)的時候不需要對此方法進行重寫
事件
如果有自定義的事件,可以采用widget為我們封裝好的方法來處理_trigger()這個方法來處理,其調用方法 this._trigger(type, event, data),第一個參數為時間類型,第二個參數為事件event對象,第三個參數為事件要傳遞的參數。
- //此widget是將textbox進行修飾一下的。自身沒有css,采用的是jquery ui css framework的樣式
- (function($){
- //ui默認采用jquery的ui前綴,后面的是widget名稱
- $.widget("ui.textboxdecorator", {
- //此widget中沒有options
- options:{
- },
- _init: function(){
- //驗證是否是需要裝飾的元素
- if (!(this.element.attr("tagName").toLowerCase() === "input" || this.element.attr("tagName").toLowerCase() === "textarea")) {
- return;
- }
- if (!(this.element.attr("type").toLowerCase() === "text" || this.element.attr("type").toLowerCase() === "password")) {
- if (this.element.attr("tagName").toLowerCase() === "input")
- return;
- }
- //this.element也就是調用此widget的元素
- var e = this.element;
- //ui-widget widget基本的樣式,ui-state-default。默認狀態的樣式;ui- corner-all 圓角(基于css3,ie下不起作用)
- this.element.addClass("ui-widget ui-state-default ui-corner-all");
- //添加hover效果和active效果
- this.element.mouseover(function(){
- e.addClass("ui-state-hover");
- }).mouseout(function(){
- e.removeClass("ui-state-hover");
- }).mousedown(function(){
- e.addClass("ui-state-active");
- }).mouseup(function(){
- e.removeClass("ui-state-active");
- });
- },
- //銷毀時,移除widget增加的樣式
- destroy:function(){
- this.element.removeClass("ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active");
- }
- })
- })(jQuery)
在使用該widget的時候,需要引用jquery,jquery.ui.core.js,jquery.ui.widget.js文件,css文件需要jquery.ui.core.css和jquery.ui.theme.css兩個文件。在調用的時候采用$("***"). textboxdecorator();來調用此widget。
文章名稱:jquery.widget開發(1)
文章URL:http://vcdvsql.cn/article46/gdipeg.html
成都網站建設公司_創新互聯,為您提供營銷型網站建設、網站設計公司、網站制作、企業建站、定制開發、用戶體驗
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯