我尝试为动态创建的按钮添加click()事件,如此
HTML
<div></div>
<button>generate new element</button>
Jquery的
$("button").click(function() {
$("div").append("<input type='button' class='mins' value='button' name='mins[]' />")
});
$.each($('[name^=mins]'), function (i, item) {
$(document).on('click', 'button', function(e) {
alert("1234");
});
});
但不幸的是,它无法正常工作。请帮我找到问题。
提前致谢。
答案 0 :(得分:6)
在添加按钮之前运行$.each
循环。所以它什么也没做。
更改
$.each($('[name^=mins]'), function (i, item) {
$(document).on('click', 'button', function(e) {
alert("1234");
});
});
到
$(document).on('click', 'input[name^=mins]', function(e) {
alert("1234");
});
答案 1 :(得分:0)
试试这个
$("button").click(function() {
$("div").append("<input type='button' class='mins' value='button' name='mins[]' />")
});
$(document).on('click', '.mins', function(e) {
alert("1234");
});
答案 2 :(得分:0)
使用此代码更改您的代码
$("button").click(function() {
$("div").append("<input type='button' class='mins' value='button' name='mins[]' />")
});
$(document).on('click', '.mins', function(e) {
alert("1234");
});
答案 3 :(得分:0)
应该是:
$(document).on('click', 'input:button[name^=mins]', function (e) {
alert("1234");
});
答案 4 :(得分:0)
另一种方法是在创建按钮时为其提供功能
$("button").click(function () {
var $input = $("<input>", {
type: 'button',
class: 'mins',
value: 'button',
name: 'mins[]',
click: function () {
alert("1234");
}
});
$("div").append($input)
});
答案 5 :(得分:0)
请勿将输入按钮直接附加到div。它会将其附加到页面中存在的所有div。此外,每个循环都在任何输入按钮存在之前运行,因此on事件不会绑定到任何元素。
使用:
$(document).on('click', 'input.mins', function (e) {
alert("1234");
});
答案 6 :(得分:0)
您可以使用此代码更改您的JavaScript代码
$("button").click(function() {
$("div").append("<input type='button' class='mins' value='button' name='mins[]' />");
$('.mins').off('click');
$('.mins').on('click', function(e) {
alert("1234");
});
});
查看此工作演示