2

我有一些按钮是根据存在的电话号码的数量动态创建的。假设我在 DB 中有 3 个名称,所以会有三个按钮。所以当我点击第一个按钮时,它应该给出第一个按钮的值,如果单击第二个,则应显示第二个按钮值。这是描述我的要求的简单jsfiddle 。我想为每个按钮分配一个不同的 ID,它应该是电话号码。在 jsfiddle 当我单击特定按钮时警报弹出,但它没有给出任何价值。

我确实喜欢这个

$('.btn').click(function(){ 
var number1 = $('#s2').val();
alert(number1);
});
4

4 回答 4

2

您必须使用jQuery 的on()方法来使用事件委托。从其文档中:

当提供选择器时,事件处理程序被称为委托。当事件直接发生在绑定元素上时,不会调用处理程序,而只会调用与选择器匹配的后代(内部元素)。jQuery 将事件从事件目标冒泡到附加处理程序的元素(即,从最里面到最外面的元素),并为沿着该路径匹配选择器的任何元素运行处理程序。

在您的情况下,您需要将.btnclick 事件委托给在将该元素动态添加到页面之前存在的祖先:

$('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 演示

于 2013-10-23T11:40:08.837 回答
1

将值属性放在按钮输入中

  <button type="button" class="btn" value="test2" >test</button>
  <button type="button" class="btn" value="test1" id="s1">test</button>
  <button type="button" class="btn" value="test" id="s2">test</button>

然后使用脚本

 $('.btn').on('click', function() {
       var number = $('#s2').val();//get value

 });
于 2013-10-23T11:56:22.413 回答
1

如果你想获得点击按钮的 id,你应该使用attr

$('.btn').click(function(){ 
   var number1 = $('#s2').attr('id');
   alert(number1);
});
于 2013-10-23T11:56:56.223 回答
1
$(document).on('click', '.btn', function(){ 
   alert($(this).val()); 
});

应该管用。“on”是一种处理动态放置元素的方式。

于 2013-10-23T11:39:53.933 回答