1

我希望能够单击我动态创建的元素并创建警报,但我似乎无法弄清楚。我已经查看了一堆关于如何使用 .on 的类似线程,但我只能让它适用于静态元素。提前致谢!

<span id="about">About</span>

<div id="lhn"></div>

和 JavaScript:

$(document).ready(function () {

    $("#about").click(function () {

        $("#lhn").append("<div id='#child'>Child</div>");

        $("#lhn").on("click", "#child", function () {
            alert("Child has been clicked");
        });

    });

});
4

4 回答 4

3

about在单击处理程序之外绑定事件。此外,创建元素时您的 IDchild不应该是:#child

$(document).ready(function() {
    $("#lhn").on("click", "#child", function () {
        alert("Child has been clicked");
    });

    $("#about").click(function () {
        $("#lhn").append("<div id='child'>Child</div>");
    });
});
于 2013-06-17T22:53:59.193 回答
1

您编写的代码有多个问题。

首先

$("#lhn").append("<div id='#child'>Child</div>");

应该是

$("#lhn").append("<div id='child'>Child</div>");

其次 - HTML 页面中的 ID 应该是唯一的

所以更换

$("#lhn").append("<div id='child'>Child</div>");

$("#lhn").append("<div class='child'>Child</div>");

第三

我看到您已经在委派该事件,因此将 click 事件移至click event. 否则,事件将在每次 click 时多次绑定到元素

$("#about").click(function () {
    $("#lhn").append("<div class='child'>Child</div>");
});

$("#lhn").on("click", ".child", function () {
    alert("Child has been clicked");
});
于 2013-06-17T22:58:34.730 回答
0

我用于附加元素的一种技术是创建元素,然后附加它。

var element = $("<div id='child'>Child</div>").appendTo("#lhn").on("click", function() {
    alert("Child has been clicked");
});
于 2013-06-17T22:54:57.087 回答
0

使用这个简单的代码,

$("#child).live("click",function(){
    alert();
});
于 2013-06-18T01:45:03.753 回答