jquery webプラグイン実装
7070 ワード
まずこれは小さなdemoで、いくつかの機能を実現することを試みました.
これはhtmlページです.
これはhtmlページです.
widget
$(function () {
$("#my-widget1").colorize({
red: 60, blue: 60
});
$("#my-widget2").colorize();
$("#my-widget3").colorize({
green: 128
});
$("#my-widget3").colorize({
red: 60, blue: 60
});
$("#disable").click(function () {
$(".custom-colorize").each(function () {
if ($(this).colorize("option", "disabled")) {
$(this).colorize("enable");
} else {
$(this).colorize("disable");
}
});
});
$("#black").click(function () {
$(".custom-colorize").each(function () {
$(this).colorize({
red: 0,
green: 0,
blue: 0
});
});
});
})
これはjsページです(前述のtest 5.jsですが、なぜ5なのでしょうか.これは私が試した5番目のバージョンですから).jsの場合、コード冗長性やプラグインの属性定義フォーマットなど、改善点がたくさんあります.(function (factory) {
if (typeof define === "function" && (define.amd || define.cmd) && !jQuery) {
// AMD CMD
define([ "jquery" ],factory);
} else if (typeof module === 'object' && module.exports) {
// Node/CommonJS
module.exports = function( root, jQuery ) {
if ( jQuery === undefined ) {
if ( typeof window !== 'undefined' ) {
jQuery = require('jquery');
} else {
jQuery = require('jquery')(root);
}
}
factory(jQuery);
return jQuery;
};
} else {
//Browser globals
factory(jQuery);
}
}(function ($) {
var Plugin = function (element, options) {
this.element = element;
this.options = options;
};
Plugin.prototype = {
console: function () {
console.log(this.element);
console.log(this.options);
},
getElement: function () {
return this.element
},
setElement: function (element) {
this.element = element;
},
getOptions: function () {
return this.options
},
setOptions: function (options) {
this.options = options;
},
disabled: function () {
this.options.disable = true;
}
};
var colorize = {
enable: function () {
var ui = $._data($(this)[0], "colorize");
if (!ui) {
$.error('error');
} else {
var options = ui.getOptions();
options["disabled"] = false;
$._data($(this)[0], "colorize").setOptions(options);
}
},
disable: function () {
var ui = $._data($(this)[0], "colorize");
if (!ui) {
$.error('error');
} else {
var options = ui.getOptions();
options["disabled"] = true;
$._data($(this)[0], "colorize").setOptions(options);
}
},
option: function (param) {
var ui = $._data($(this)[0], "colorize");
if (!ui) {
$.error('error');
} else {
return ui.getOptions()[param];
}
},
init: function (param) {
return this.each(function () {
var $this = $(this);
var _api = {};
var defaults = {
red: 255,
green: 0,
blue: 0,
disabled: false
};
// ,
var options;
var ui = $._data(this, "colorize");
if (!ui) {
options = $.extend({}, defaults, param);
ui = new Plugin(this, options);
$._data(this, "colorize", ui);
} else {
options = $.extend({}, ui.getOptions(), param);
ui.setOptions(options);
}
var changer = $("
もし何か問題があったら、嫌がらせを歓迎します( ̄▽ ̄)/時間が経つと忘れてしまうかもしれませんφ(>ω