[英]click() for dynamically created button
我試圖為這樣的動態創建的按鈕添加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");
});
});
但很遺憾,它無法正常工作。請幫助我查找問題。
提前致謝。
您的$.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");
});
嘗試這個
$("button").click(function() {
$("div").append("<input type='button' class='mins' value='button' name='mins[]' />")
});
$(document).on('click', '.mins', function(e) {
alert("1234");
});
用此代碼更改您的代碼
$("button").click(function() {
$("div").append("<input type='button' class='mins' value='button' name='mins[]' />")
});
$(document).on('click', '.mins', function(e) {
alert("1234");
});
小提琴: http : //jsfiddle.net/bnq3P/7/
它應該是:
$(document).on('click', 'input:button[name^=mins]', function (e) {
alert("1234");
});
另一種方法是在創建按鈕時為其賦予功能
$("button").click(function () {
var $input = $("<input>", {
type: 'button',
class: 'mins',
value: 'button',
name: 'mins[]',
click: function () {
alert("1234");
}
});
$("div").append($input)
});
不要將輸入按鈕直接附加到div。 它將添加到頁面中所有現有的div中。 另外,您的每個循環都在存在任何輸入按鈕之前運行,因此on事件不會綁定到任何元素。
采用:
$(document).on('click', 'input.mins', function (e) {
alert("1234");
});
您可以使用此代碼更改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");
});
});
您可以在此處查看此工作演示http://jsfiddle.net/bnq3P/14/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.