动态按钮事件在Jquery上获取未定义的id消息

时间:2015-01-05 11:28:13

标签: jquery dynamic

我正在尝试创建动态按钮并单击事件。创建动态按钮正在工作,但当我克服它时,我收到了未定义的消息。我错了什么?对不起我的郎。 Thx提前。我的代码如下:

$(function(){
   var i = 1;

$('button').on('click',function(){
      var r= $('<input type="button" class="dinamik" value="new button '+ i +' "/>');
      $("body").append(r);
      i++;
   });
});

    $(function(){
        $(document).on('click', '.dinamik', function(){
           var valueDeger = $(this).find('.dinamik').attr('value');
           alert("Value değeri: " + valueDeger);
    });
});

Demo is here.

4 个答案:

答案 0 :(得分:2)

改变这个:

var valueDeger = $(this).find('.dinamik').attr('value');

到此:

var valueDeger = $(this).val(); // or this.value;

问题是$(this)是指被点击的元素,即您的input[type="button"],并且您正在尝试在其中找到.find('.dinamik'),而不是那里,所以这就是为什么它是未定义的

答案 1 :(得分:1)

在点击事件处理程序中,this引用按钮本身,无需使用find方法:

$(function(){
    $(document).on('click', '.dinamik', function(){
       var valueDeger = $(this).attr('value');
       alert("Value değeri: " + valueDeger);
    });
});

JSFiddle Demo


建议使用val()方法代替attr('value'),请参阅此Stack Overflow question

答案 2 :(得分:1)

Demo

试试这个

$(function(){
    var i = 1;
    $('button').on('click',function(){
        var r= $('<input type="button" class="dinamik" value="new button '+ i +' "/>');
        $("body").append(r);
        i++;
    });
});

$(function(){
    $(document).on('click','.dinamik', function(){
        var valueDeger = $(this).val();
        alert("Value değeri: " + valueDeger);
    });
});

答案 3 :(得分:0)

改变
var valueDeger = $(this).find('.dinamik').attr('value');

var valueDeger = $(this).val();