SQLの窓

2013年03月03日


jQuery を使用したカスタム属性によるコンテンツ表現の標準化

HTML だけでスライダーを作成

class="demo" の DIV 内のみ、HTML の要素を拡張してスライダーへのパラメータとしています。もちろん、jQuery の専用コード(標準化用コードの実行)は必要不可欠ですが、仕様さえ決まっておれば、コンテンツを作成するのにプログラマは必要ありません。



<div class="demo">

<table><tr>
<td>
	<input type="text" id="amount1" />
	<div id="slider-v1" set_content="amount1" value="100"></div>
</td>
<td>
	<input type="text" id="amountA" />
	<div id="slider-vA" set_content="amountA" value="800"></div>
</td>
<td>
	<input type="text" id="amount2" />
	<div id="slider-h1" set_content="amount2" value="500"></div>

	<br /><br />

	<input type="text" id="amountB" />
	<div id="slider-hB" set_content="amountB" value="400"></div>
</td>
</tr></table>

</div>

このサンプルでは『標準化』としてはまだ甘い

id の命名法で縦か横かを決定し、DIV に追加した属性で振る舞いの一部を定義しています。解りやすくする為に、値をセットする場所に INPUT を使用していますがその必要は無く、実際はそれ用の要素は自動的に作成して配置する方向が正解だと思います。

さらに、スライダーのオプションは、全て DIV の属性に設定可能ですし、共通の設定内容やテーマがある場合は、それとの連携も想像できます。

いっその事、新しい要素を作ってしまってもよさそうなんですけれど、以下のコードが動くので。
<aaa>あああああ</aaa>
<script type="text/javascript">
$("AAA").click(function(){alert("ok")});
</script>
<link type="text/css" href="http://homepage2.nifty.com/lightbox/jquery/jqcss/black-tie/jquery-ui-1.10.1.custom.css" rel="stylesheet" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js"></script>

<style type="text/css">
.demo {
	display: none;
}

.demo td {
	vertical-align: top;
	padding: 10px;
}

.ui-slider .ui-slider-handle {
	width: 1.0em;		/* ハンドルの幅 */
	height: 1.0em;		/* ハンドルの高さ */
	border-radius: 10px;	/* ハンドルを丸くする */
}

</style>

<script type="text/javascript">
$(function() {

	// 数値表示部分の CSS( Slider 側のDIVに定義も可能 )
	// id に "amount" と先頭に付く demo クラス内
	$(".demo input[id^='amount']")
		.css("border", 0)
		.css("color","#f6931f")
		.css("font-weight","bold")
		.css("width","30px")
		.css("margin-bottom","10px");

	// 縦スライダー
	$( ".demo div[id^='slider-v']" ).slider({
		orientation: "vertical",
		range: "min",
		min: 0,
		max: 1000,
		create: function( event, ui ) {
			// 値をセットするコンテンツのID を自分自身の属性より得る
			var target_name = $(this).attr("set_content");
			// 初期値を自分自身の属性より得る
			var default_value = $(this).attr("value");
			// 外部へ初期値をセットする
			$( "#"+target_name ).val( default_value );
			// 自分自身へ初期値をセットする
			$(this).slider("value", default_value );

			// 大きさ
			$(this).css("width","10px");
			$(this).css("height","200px");
		},
		slide: function( event, ui ) {
			var target_name = $(this).attr("set_content");
			$( "#"+target_name ).val( ui.value );
		}
	});

	// 横スライダー
	$( ".demo div[id^='slider-h']" ).slider({
		orientation: "horizontal",
		range: "min",
		min: 0,
		max: 1000,
		create: function( event, ui ) {
			// 値をセットするコンテンツのID を自分自身の属性より得る
			var target_name = $(this).attr("set_content");
			// 初期値を自分自身の属性より得る
			var default_value = $(this).attr("value");
			// 外部へ初期値をセットする
			$( "#"+target_name ).val( default_value );
			// 自分自身へ初期値をセットする
			$(this).slider("value", default_value );

			// 大きさ
			$(this).css("width","200px");
			$(this).css("height","10px");
		},
		slide: function( event, ui ) {
			var target_name = $(this).attr("set_content");
			$( "#"+target_name ).val( ui.value );
		}
	});


	$(".demo").show();

});
</script>

<div class="demo">

<table><tr>
<td>
	<input type="text" id="amount1" />
	<div id="slider-v1" set_content="amount1" value="100"></div>
</td>
<td>
	<input type="text" id="amountA" />
	<div id="slider-vA" set_content="amountA" value="800"></div>
</td>
<td>
	<input type="text" id="amount2" />
	<div id="slider-h1" set_content="amount2" value="500"></div>

	<br /><br />

	<input type="text" id="amountB" />
	<div id="slider-hB" set_content="amountB" value="400"></div>
</td>
</tr></table>

</div>
<br />
<input type="text" id="amount3" value="ここは、セレクタ対象外" />

slider-v と slider-h という要素で実装

結局以下のようにしても動くので、どうにでもなりそうです。
<script type="text/javascript">
$(function() {

	// 数値表示部分の CSS( Slider 側のDIVに定義も可能 )
	// id に "amount" と先頭に付く demo クラス内
	$(".demo input[id^='amount']")
		.css("border", 0)
		.css("color","#f6931f")
		.css("font-weight","bold")
		.css("width","30px")
		.css("margin-bottom","10px");

	// 縦スライダー
	$( ".demo slider-v" ).slider({
		orientation: "vertical",
		range: "min",
		min: 0,
		max: 1000,
		create: function( event, ui ) {
			// 値をセットするコンテンツのID を自分自身の属性より得る
			var target_name = $(this).attr("set_content");
			// 初期値を自分自身の属性より得る
			var default_value = $(this).attr("value");
			// 外部へ初期値をセットする
			$( "#"+target_name ).val( default_value );
			// 自分自身へ初期値をセットする
			$(this).slider("value", default_value );

			// 大きさ
			$(this).css("display","block");
			$(this).css("width","10px");
			$(this).css("height","200px");
		},
		slide: function( event, ui ) {
			var target_name = $(this).attr("set_content");
			$( "#"+target_name ).val( ui.value );
		}
	});

	// 横スライダー
	$( ".demo slider-h" ).slider({
		orientation: "horizontal",
		range: "min",
		min: 0,
		max: 1000,
		create: function( event, ui ) {
			// 値をセットするコンテンツのID を自分自身の属性より得る
			var target_name = $(this).attr("set_content");
			// 初期値を自分自身の属性より得る
			var default_value = $(this).attr("value");
			// 外部へ初期値をセットする
			$( "#"+target_name ).val( default_value );
			// 自分自身へ初期値をセットする
			$(this).slider("value", default_value );

			// 大きさ
			$(this).css("display","block");
			$(this).css("width","200px");
			$(this).css("height","10px");
		},
		slide: function( event, ui ) {
			var target_name = $(this).attr("set_content");
			$( "#"+target_name ).val( ui.value );
		}
	});


	$(".demo").show();

});
</script>

<div class="demo">

<table><tr>
<td>
	<input type="text" id="amount1" />
	<slider-v set_content="amount1" value="100"></slider-v>
</td>
<td>
	<input type="text" id="amountA" />
	<slider-v set_content="amountA" value="800"></slider-v>
</td>
<td>
	<input type="text" id="amount2" />
	<slider-h set_content="amount2" value="500"></slider-h>

	<br /><br />

	<input type="text" id="amountB" />
	<slider-h set_content="amountB" value="400"></slider-h>
</td>
</tr></table>

</div>




タグ:jquery javascript
【jQueryの最新記事】
posted by lightbox at 2013-03-03 08:00 | jQuery | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり