私はjQueryを独学しようとしていますが、現在クリックイベントをいじっています。私が理解しているように、idに基づいてクリックイベントを発生させるための構文は
$("#IDname").click(function(){ //stuff goes here})
これを試してみると、クリックイベントは発生しません。ただし、「#IDname」を「this」オブジェクトを使用するように変更すると、クリック イベント DID が発生します。私は「この」オブジェクトに基づいて発火したいとは思わず、ハンドラーを期待どおりに発火させるためのコードをまだいじっています(または、問題をすべて間違って見ていることがわかるまで)。
私の質問は、ID ではなく「this」でイベントが発生した理由です。以下のサンプルコードを参照してください。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Demo</title>
<style>
.heading {
font-family:"Palatino Linotype", "Book Antiqua", Palatino, serif;
}
</style>
</head>
<body>
<script src="jquery.js"></script>
<script>
$( document ).ready(function() {
<!-- Does not fire the click event -->
$( "#shopping_list" ).click(function(event) {
$("#shopping_list").append("<tr>");
$("#shopping_list").append("<td>Doe</td>");
$("#shopping_list").append("<td>Re</td>");
$("#shopping_list").append("<td>Mi</td>");
$("#shopping_list").append("</tr>");
})
<!-- Works as expected...this adds a table row when the 'Shopping List' text is clicked -->
$( this ).click(function(event) {
$("#shopping_list").append("<tr>");
$("#shopping_list").append("<td>1</td>");
$("#shopping_list").append("<td>2</td>");
$("#shopping_list").append("<td>3</td>");
$("#shopping_list").append("</tr>");
})
});
</script>
</body>
<div class="heading"><h2>Shopping List</h2>
<div class="shopping_list">
<table>
<tbody>
<form>
<div id="shopping_list"></div>
</form>
</tbody>
</table>
</div>
</div>
</html>