簡體   English   中英

click()用於動態創建的按鈕

[英]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");
});

DEMO

用此代碼更改您的代碼

$("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)
});

DEMO

不要將輸入按鈕直接附加到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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM