您必须使用jQuery 的on()
方法来使用事件委托。从其文档中:
当提供选择器时,事件处理程序被称为委托。当事件直接发生在绑定元素上时,不会调用处理程序,而只会调用与选择器匹配的后代(内部元素)。jQuery 将事件从事件目标冒泡到附加处理程序的元素(即,从最里面到最外面的元素),并为沿着该路径匹配选择器的任何元素运行处理程序。
在您的情况下,您需要将.btn
click 事件委托给在将该元素动态添加到页面之前存在的祖先:
$('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 演示。