jqueryメソッド外部化
ここでは、画像をクリックすると、画像サイズが表示されるプラグインを作成する。
#画面サイズ取得と表示
$(function(){
$(‘img’).click(function(){
var msg = $(this).width() + ‘x’ + $(this).height();
$(this).wrap(‘<div style = “position:relative;”></div>’);
var div = $(‘<div>’)
.text(msg)
.css(‘position’, ‘absolute’)
.css(’top’ , ‘0’);
$(this).after(div);
});
});
#スタイルの表示
上記にスタイルを追加
$(function(){
$(‘img’).click(function(){
var msg = $(this).width() + ‘x’ + $(this).height();
$(this).wrap(‘<div style = “position:relative;”></div>’);
var div = $(‘<div>’)
.text(msg)
.css(‘position’, ‘absolute’)
.css(’top’ , ‘0’);
.css(‘background’,’black')
.css(‘color’,’white')
.css(font-size,’10px')
.css(‘opacity’,’0.9')
.css(‘padding’,’2px’);
$(this).after(div);
});
});
#プラグインファイルの作成
上記のコードをプラグインファイルへ
jquery.showsize.js
;(function($){
$.fn.showsize = function(options){
//this(3つのimg)
var elements = this;
elements.each(function(){
var opts = $.extends({}, $.fn.showsize.defaults, options);
$(function(){
$(‘img’).click(function(){
var msg = $(this).width() + ‘x’ + $(this).height();
$(this).wrap(‘<div style = “position:relative;”></div>’);
var div = $(‘<div>’)
.text(msg)
.css(‘position’, ‘absolute’)
.css(’top’ , ‘0’);
.css(‘background’,’black')
.css(‘color’,’white')
.css(font-size, opts.size + ‘px')
.css(‘opacity’,’opts.opacity + ‘px'')
.css(‘padding’,’2px’);
$(this).after(div);
});
});
return this;
});
$.fn.showsize.defaults = {
size:10,
opacity:0.5
});
})(jQuery);
<script>
$(function(){
$(‘img’).showsize({
size:20,
opacity:0.2
});
</script>
#data属性の使用
data-sizeを反映させる
<img src=“image1.jpg” data-size=“50px”></p>
jquery.showsize.js
;(function($){
$.fn.showsize = function(options){
//this(3つのimg)
var elements = this;
elements.each(function(){
var opts = $.extends({}, $.fn.showsize.defaults, options,$(this). data());
$(function(){
$(‘img’).click(function(){
var msg = $(this).width() + ‘x’ + $(this).height();
$(this).wrap(‘<div style = “position:relative;”></div>’);
var div = $(‘<div>’)
.text(msg)
.css(‘position’, ‘absolute’)
.css(’top’ , ‘0’);
.css(‘background’,’black')
.css(‘color’,’white')
.css(font-size, opts.size + ‘px')
.css(‘opacity’,’opts.opacity + ‘px'')
.css(‘padding’,’2px’);
$(this).after(div);
});
});
return this;
});
$.fn.showsize.defaults = {
size:10,
opacity:0.5
});
})(jQuery);
<script>
$(function(){
$(‘img’).showsize({
size:20,
opacity:0.2
});
</script>
#プラグイン内で関数使う
function getRandomColor(){
var colors = [‘white’ , ‘pink’ , ‘orange’ , ‘green’];
return colors[Math.floor(Math.random() * colors.length)];
}
.css’(‘color’ , getRandomColor())