jquery plugin

6
jQuery Plugin Easy Try Jason Wang

Upload: jason-wang

Post on 14-Jul-2015

118 views

Category:

Software


2 download

TRANSCRIPT

Page 1: JQuery Plugin

jQuery Plugin

Easy Try

Jason Wang

Page 2: JQuery Plugin

Plugin 框架jQuery.fn.myRectImg = function(settings) {

// myRectImg 為自己設定的Plugin 名稱

// settings 自訂的參數,可依需求新增數量

...

};

OR

$.fn.myRectImg = function(settings) {

…...

...

};

Page 3: JQuery Plugin

預設物件區塊

$.fn.myRectImg = function (settings) {

var _defaultSettings = { // 預設物件

rectHeight: 200, // 變數名稱 : 值

rectWidth: 200,

isInlineBlock:true,

rectRadius: 0,

borderWidth: 0,

callback: function(data){} // 函數名稱 : function 物件參數 data

}

// 利用 $.extend 覆寫掉預設的參數

var _settings = $.extend(_defaultSettings, settings); // 設定屬性物件

…..

Page 4: JQuery Plugin

處理程序區塊$.fn.myRectImg = function (settings) {

….

var _settings = $.extend(_defaultSettings, settings); // 設定屬性物件

var _handler = function () { // 處理程序取出設定屬性撰寫需求

var imgW = $(this).width(); // this 為使用此 Plugin 物件

var imgH = $(this).height();

var imgTop = (_settings.rectHeight - imgH) / 2;

var imgLeft = (_settings.rectWidth - imgW) / 2;

….略

}

// 綁定每個使用此 Plugin 的物件(this)執行處理程序 (_handler)

return this.each(_handler);

}

Page 5: JQuery Plugin

執行Plugin<img src="Winter.jpg" />

$(function (){

// 因為使用 $.extend 做比對覆寫,所以變數參數可移動跟減少來傳遞

$("img").myRectImg({

rectHeight: 300,

rectWidth: 300,

rectRadius: 30,

callback: function(data) {

data.css({"border-style" : "dashed", "border-width": 1});

}

});

OR

$("img").myRectImg(); // 直接使用預設的設定值

});

Page 6: JQuery Plugin

END