追加した要素(class)にclickイベントを設定する(.on編)

jquery

jQueryで追加した要素に対して、clickイベントを追加する方法を紹介します。
具体的には、jQueryの「append」で追加した要素(aタグやpタグ)にclickイベントを追加する方法と言えば、イメージしやすいかと思います。
イベントを追加する方法は、jQueryには「.live()」や「.bind()」が用意されていますが、今後はjQuery1.7で登場した「.on()」を使用することが推奨されています。

[スポンサーリンク]

この章でやること

「.on()」を使って、追加した要素にclickイベントを設定します。

追加した要素(class)にclickイベントを設定するソース

<!doctype html>
<html>
<head>
<meta charset="utf-8" content="">
<title>追加した要素(class)にclickイベントを設定する</title>
<link href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js" type="text/javascript" ></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js" type="text/javascript"></script>

<!-- CSS部分 -->
<style>
    .addClick { color: blue;
                font-size: 200%;
                border-style: solid;
              }
</style>

<!-- スクリプト部分 -->
<script type="text/javascript">
    $( function() {
        $( '#id-add' ) .click(function(){
                $( '#add' ).append('<div class="addClick">click</div><br/>');
        });
        $("#add").on("click", { class: "addClick" }, function() {
            alert("ok");
        });
        //$("#add").off('click');
    } );
</script>

</head>

<!-- HTML部分 -->
<body>

<h1>追加した要素(class)にclickイベントを設定する</h1>
<p><input type="button" id="id-add" value="click" /> <br />
<div id="add" ></div>

</body>
</html>

解説

21行目から23行目で、ボタン(id-add)をクリックで、要素「addClick」(青枠)を追加しています。
24行目から26行目で、追加した要素がクリックされた時のイベントを設定しています。サンプルソースでは、アラートを表示しています。

実行結果

ボタンをクリックすると、「addClick」(青枠)が追加されます。
「addClick」(青枠)をクリックすると、アラート(ok)が表示されます。

on-event1

さいごに

jQuery1.7から登場した、「.on()」は直感的にもわかりやすくました。
「.live()」や「.bind()」を「.on()」で書き換えることも可能です。
追加した要素にイベントを追加するときは、「.on()」をつかいましょう。

サンプルソースではコメントアウト(27行目)していますが、「.on()」で追加したイベントを削除するには「.off()」を使いましょう。
それでは!