我正在尝试创建动态按钮并单击事件。创建动态按钮正在工作,但当我克服它时,我收到了未定义的消息。我错了什么?对不起我的郎。 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);
});
});
答案 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);
});
});
建议使用val()
方法代替attr('value')
,请参阅此Stack Overflow question 。
答案 2 :(得分:1)
试试这个
$(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();