thisキーワード

thisキーワード

  • JavaScript予約語
  • thisは、標準の要素オブジェクト
  • jQueryメソッドにアクセスするには、「$()関数」で「this」をラッピングする必要があります
  • 「$()関数」を利用することで、標準の要素オブジェクトをjQueryオブジェクトに変換できます
  • その時の流れに応じて意味するものが変わります


《例》

$( document.body ).css( 'background-color', 'red' );
イベントハンドラ内のthis
  • htisは、イベント処理の対象となる要素自体を指します(セレクタと同義)
  • thisというキーワードを使うことで、どの要素が対象となったか特定できます
  • thisは、jQueryオブジェクトではない「DOM要素」のため、jQueryメソッドを続けて書くことができません
  • jQueryのメソッドを使えるようにする場合は、「$( this )」とすることで可能になります

《onメソッドを使用しない場合》

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>thisキーワード</title>
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
$(function() {
  $( 'input[type=button]' ).click( function() {
    var val = $(this).val();
    alert( val );
  });
  console.log( val );
});
</script>
</head>
<body>
<form>
<input type="button" value="HTML">
<input type="button" value="CSS">
<input type="button" value="JavaScript">
</form>
</body>
</html>
onメソッドの利用
  • onメソッドは、offメソッドでイベントを外すことが可能
  • appendメソッドで「後から追加される」要素に対してもイベントを付与することが可能
  • スマートフォンのイベントを取得する際に「$( 'セレクタ' ).0n( 'touchstart' )」が使用可能です


《onメソッドを使用した場合》

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>thisキーワード</title>
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
$(function() {
  $( 'input[type=button]' ).on( 'click', function() {
    var val = $(this).val();
    alert( val );
    console.log( val );
  });
});
</script>
</head>
<body>
<form>
<input type="button" value="HTML">
<input type="button" value="CSS">
<input type="button" value="JavaScript">
</form>
</body>
</html>