jQuery のon()
メソッドを使用してイベント委任を使用する必要があります。そのドキュメントから:
セレクターが提供されている場合、イベント ハンドラーは委任されていると見なされます。イベントがバインドされた要素で直接発生した場合、ハンドラーは呼び出されませんが、セレクターに一致する子孫 (内部要素) に対してのみ呼び出されます。jQuery は、イベント ターゲットからハンドラーがアタッチされている要素 (つまり、最も内側の要素から最も外側の要素) までイベントをバブルし、セレクターに一致するそのパスに沿ったすべての要素に対してハンドラーを実行します。
あなたの場合、.btn
その要素がページに動的に追加される前に存在する先祖にクリックイベントを委任する必要があります。
$('body').on('click', '.btn', function() {
var number1 = $('#s2').val();
alert(number1);
});
要素に近づくほど.btn
良いので、ドキュメントbody
が最も近い非動的な祖先でない限り、これをもう少し近いものに変更する必要があります。
編集:コメントでさらに質問:
各ボタンの ID を取得できますか
id
各ボタンのを取得するには、次を使用しthis.id
ます。
$('body').on('click', '.btn', function() {
var id = this.id;
alert(id);
});
編集2:コメントでさらに質問
私が言ったように、ID は数字です。したがって、button1 をクリックすると、入力フィールドに s1 が出力されます。方法を教えてください。
input
「数値」があるため、id
jQuery のメソッドを使用して、クリックしたボタン.val()
の値を設定するだけです。input
id
$('body').on('click', '.btn', function(){
$('#number').val(this.id);
});
ワーキング JSFiddle デモ。