cssへセットと除去

cssメソッドで、まとめてCSSスタイルを指定できる。

jquery source

	$('#xxx').css({
		'color':'red',
		'font-size':'1.1em',
		'width':'100%',
		'height':'100%',
	});
	

除去する場合は「''」をセットする

	$('#xxx').css({
		'color':'',
		'font-size':'',
		'width':'',
		'height':'',
	});
	

一つだけ指定する場合

	$('#xxx').css('color':'blue');
	


要素の縦横サイズを取得 | width,height,outerWidth,outerHeight

width,height

CSSのwidth,heightと同じ値を取得する
	var w = $('#xxx').width();
	var h = $('#xxx').height();
	

outerWidth,outerHeight

width,heightのそれぞれにpaddingとborderを加算した幅を取得する。
marginは無視される。
	var w = $('#xxx').outerWidth();
	var h = $('#xxx').outerHeight();
	
サンプル

要素の位置を取得およびセット | position,offset

位置情報を得るにはoffsetメソッドを使うこと。

positionメソッドは親要素からの相対座標と言われているが、正確には誤りである。
親要素のCSSにposition:relative(もしくはabsolute,fixed)が指定されている場合のみ相対位置である。 指定していない場合は絶対位置となる。

	//絶対位置を取得(HTMLドキュメントの右端からの位置)
	var offset=$('#test1').offset();
	var o_top=offset.top;
	var o_left=offset.left;

	//親要素からの相対位置を取得。(親要素にrelative等が指定されていない場合は絶対位置)
	var pos=$('#test1').position();
	var p_top=pos.top;
	var p_left=pos.left;
	
サンプル

位置をセットする場合

	var left = 150;
	var top = 250;
	
	$('#test1').offset({'top':top,'left':left });
	
	// position:relative(もしくはabsolute,fixed)である場合、CSSへもセットすると良い。
	$('#test1').css({
			'left':left + 'px',
			'top':top + 'px'
		});
	

マウスオーバーイベント | jQuery hover

$(セレクタ).hover(オーバーイベント,アウトイベント);
マウスオーバーイベントはオーバーイベントとアウトイベントの2つから構成される。
オーバーイベントはセレクタで指定した要素範囲内に、マウスカーソルが入った瞬間、1回発動する。 要素内をマウスで動かしても、連続でマウスオーバーイベントは起きない。
アウトイベントは要素からはずれたときに発動する。

html source

	<div id="test1" style="width:50px;height:50px;background-color:#dff0cb"></div>
	<div id="res1"></div>
	

javascript source

	$('#test1').hover(
		function(){
			console.log('over');
			$('#res1').html('over');
		},
		function(){
			console.log('out');
			$('#res1').html('out');
		}
	);
	
サンプル

リストの並び替え | jquery-ui-sortable

jquery-ui-sortableはjQuery UIの一機能です。
リストをマウスドラッグで入れ替えることができます。



サンプル
参考サイト
参考サイト2

キーボードのイベント| keydown keypress keyup

window(画面全体)やテキストエリア、input要素にキーイベントを組み込むことができる。 div要素には組み込めないようである。
キーイベントにはkeydown,keyup,keypressの3種類が存在する。

keypressについて

shift+「Caps Lock」で小文字入力、大文字入力を切り替えたとき、キーコードの値も変化する。
keydown,keyupのキーコードは大文字入力のキーコードと同じ値である。

また、keypressにはshiftキー同時押しの概念が存在する。
大文字入力扱いなので、keydown,keyupのキーコードと同値になる。

イベント説明
keydownキーを押しこんだ時のイベント
keyupキーを話した時のイベント
keypress キー押下イベント。
keydownとkeyupを併せ持つ。
shiftキーの概念が存在する。
小文字入力モードのときキーコードはkeydown、keyupと異なるが、 大文字入力モードやshiftキー同時押しで同じキーコードになる。
イベント発動順はkeydown,keypress,keyupである。

ソースコード

	~略~
	<script src="jquery.js"></script>
	
	<script>
	$(function(){
		// キーを離したときのイベント
		$('#test1').keyup(function(e){
			var str = 'keyup:' + e.keyCode + '<br>';
			$('#res').append(str);
		});
		
		// キーを押しこんだときのイベント
		$('#test1').keydown(function(e){
			var str = 'keydown:' + e.keyCode + '<br>';
			$('#res').append(str);
		});
		
		// キーを押下イベント(keydownとkeyupを組み合わせたイベント)
		$('#test1').keypress(function(e){
			var str = 'keypress:' + e.keyCode + '<br>';
			$('#res').append(str);
		});
		
	});
	</script>
	~略~
	<textarea id="test1"></textarea>
	<div id="res" >
	~略~
	

出力(小文字入力モードで「A」キーを押した時)

keydown:65
keypress:97
keyup:65

windowにキー押下イベントを組み込む場合、以下のように記述する。
	$(window).keypress(function(e){
		console.log(e.keyCode);
	});
	


サンプル

フォーカスしたときに値を全選択する

入力フォームをフォーカスしたとき、内部の文字列を全選択する。

サンプル

html

	<input id="test1" type="text" value="ネコがネズミを食べる" />
	

javascript/jquery

	$(function(){
		$("#test1").focus(function() {
		    $(this).select();
		});
	});
	
サンプル

子要素を取得する

要素オブジェクトから子要素を取得にはfindメソッドを使う。
子要素だけでなく、孫要素なども取得できる。

html
	<div id="animal">
		<div id="cat">
			<span id="kuro-neko">黒猫</span>
			<aside id="siam-cat">シャム猫</aside>
		</div>
		<div class="dog">犬</div>
	</div>
	

js source
	var elm1 = $('#animal');
	var siam_cat = elm1.find('#siam-cat').html();
	console.log(siam_cat);
	
出力
	シャム猫
	

childrenメソッド

childrenメソッドは直下の子要素のみ取得可能。
孫要素は取得できない。

js source
	var elm2 = $('#animal');
	var dog = elm1.children('.dog');// 直下の子要素のみ取得可能
	console.log(dog);
	
出力


第一の子要素を取得 | 長男要素の取得

	var firstRow = parElm.children().eq(0);
	

タグ名を取得する

要素からタグ名を取得するには、「tagName」属性を取得すればよい。

html
<input id="hoge" type="text"  />

jquery
var tagName = $('#hoge').get(0).tagName;


以下の方法でも取得できる。
var tagName = $('#hoge').prop("tagName"); 


別ページである外部HTMLからDOMを取得

外部のHTMLファイルを読み込み、findで内部コンテンツを検索する。


外部ファイルは同じサーバー内のものだけである。 クロスドメインには対応しておらず。(読込先がクロスドメインを許可している場合は別)

JavaScript

	var url = "sample1.html";
	
	$.ajax({
		type: "GET",
		url: url,
		cache: false,
		dataType: "text",
		success: function(text, type) {

			var obj = $.parseHTML(text);

			var res = $(obj).find('#test2').html();
			
			console.log(res);

		},
		error: function(xmlHttpRequest, textStatus, errorThrown){
			
			alert(textStatus);
		}
	});	
	

sample1.html(外部HTML)

	<!DOCTYPE html>
	<html>
	<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
	<script src="/note_prg/js/jquery-1.11.1.min.js"></script>
	<script>
	$(function(){
		alert('セキュリティエラー:外部HTMLのスクリプトが実行された');
	});
	</script>
	</head>
	<body>
	<div>
		<div id='test1'>Hello World! 壱</div><div id="test2">Hello World! 弐</div></div>
	</body>
	</html>
	

出力
Hello World! 弐

サンプル

$.parseHTML();

「$.parseHTML(text);」でパースすると外部HTML内に埋め込まれているJavaScriptを実行しません。
「$(text)」でもパースできますが、JavaScriptが実行される危険があります。


HTML文字列をDOM扱いで検索 | $.parseHTML

HTML文字列をパースし、任意の要素をfindで検索する。

サンプル
	var text = "<div><div id='test1'>Hello World! 壱</div><div id='test2'>Hello World! 弐</div></div>";
	var obj = $.parseHTML(text);
	var res = $(obj).find('#test2').html();
	console.log(res);
	

コンソール出力
Hello World! 弐


パース後のオブジェクトは、DOMへ追加やセットができる。
	$('body').append(obj);


取得できないケース

「div」などタグでラップされていないとfindで取得することはできない。
	var text = "<div id='test1'>Hello World! 壱</div><div id='test2'>Hello World! 弐</div>";
	var obj = $.parseHTML(text);
	var res = $(obj).find('#test2').html();// ← 空となり取得できず
	

「body」の直下でも取得できない。間にラップとなるタグが必要である。
	var text = "<body><div id='test1'>Hello World! 壱</div><div id='test2'>Hello World! 弐</div></body>";
	var obj = $.parseHTML(text);
	var res = $(obj).find('#test2').html();// ← 空となり取得できず
	

$.parseHTMLの利点

「$.parseHTML(text);」でパースすると外部HTML内に埋め込まれているJavaScriptを実行しません。
「$(text)」でもパースできますが、JavaScriptが実行される危険があります。