[英]How to get the ID of dynamically generated buttons
我自动生成了一些按钮
<div class="wrapper" id="wrapper"></div>
<script type="application/javascript">
var x, i, y;
for(i = 0; i <= 10; i++){
y = i;
x = "<button class=btn_class"+y+"id=btn"+y+"onclick(alert(this.id);>Ukor</button>";
$("#wrapper").append(x);
}
$("button").on("click", function(){
alert(this.id);
});
</script>
我想在点击任何按钮时执行不同的操作。 但我似乎无法通过id获取按钮。 我还需要发送y作为函数的争论
问题是你没有空格分隔属性。 所以你要创建一个看起来像这样的元素:
<button class=btnclass0id=btn0onclick(alert(this.id);>Ukor</button>
所以一切都进入了class
属性。 您应该在属性值周围加上引号,并在属性之间添加空格。
也不需要onclick
属性,因为你使用$("button").on("click", ...)
来做到这一点。
所以它应该是:
x = "<button class='btn_class"+y+"' id='btn"+y+"'>Ukor</button>";
您还可以使用jQuery的面向对象的方式来创建元素:
x = $("<button>", {
"class": "btn_class" + y,
"id": "btn"+y,
text: "Ukor"
});
顺便说一句,为什么你把y
放在课堂上? 通常,类的要点是让所有相似的元素具有相同的类,因此您可以一次性解决所有这些问题。
看起来您正在构建HTML而没有必要的空格或属性之间的标点符号,因此您的按钮HTML将如下所示:
<button class=btn_class0id=btn0onclick(alert(this.id);>Ukor</button>
这意味着没有id
属性。
尝试修复它像这样:
x = '<button class="btn_class' + y + '" id="btn' + y + '" onclick="alert(this.id);">Ukor</button>';
$("#wrapper").append(x);
...或者更好的是,使用jQuery API构建您的DOM:
x = $('<button onclick="alert(this.id);">Ukor</button>').attr({
id: 'btn' + y,
className: 'btn_class' + y
});
您的问题在于代码将生成的字符串格式
<button class=btnclass0id=btn0onclick(alert(this.id);>Ukor</button>
你需要:
<button class="btnclass0" id="btn0" onclick="alert(this.id);">Ukor</button>
var x, i, y; for (i = 0; i <= 10; i++) { y = i; x = "<button class='btn_class" + y + "' id='btn" + y + "'>Ukor</button>"; $("#wrapper").append(x); } $("button").on("click", function() { alert(this.id); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="wrapper" id="wrapper"></div>
将内容添加到单个字符串中,然后将其附加到dom中一次 - 比附加每次迭代更快。 然后使用指定的单击事件处理程序 - 提醒按钮的ID。 这些类需要是一个共同的价值 - 不像id那样独特。 此外 - 你根本不需要“y”,如果你需要将数字发送到你已经在id中的函数 - 只需获取id的数字部分,你就可以根据需要使用它。
$(document).ready(function(){ var x=""; for(i = 0; i <= 10; i++){ x += "<button class='btn_class' id='btn"+i+"'>Ukor</button> "; } $("#wrapper").append(x); $(document).on('click','.btn_class', function(){ (alert($(this).attr('id'))) }) })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="wrapper" id="wrapper"></div>
我建议使用String模板来避免串联时attrs之间的间距错误 - >更好地了解String中变量的可见性:
$(Array.from({length:11},(v,k)=>k) .map((i)=>`<button class="btn_class${i}" id="btn${i}" onclick="alert(this.id)">Ukor${i}</button>`) .join('')).appendTo('#wrapper')
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="wrapper" id="wrapper"></div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.