抱歉,如果该问题引起误解,我找不到更好的方式来描述我的问题。无论如何,这里是:

假设我有一个按钮start,最初为我显示一个字符串。所说的字符串(我们称它为stringA)是通过jQuery这样输出的:

$(".start").click(function() {
    $(".startButton").hide('slow', function() {
        $("#table1").html(stringA);
    });
});


好的。凉。一切顺利。现在在stringA中,我有多个
<span class="optButton">this is a button</span>按钮。我的optButton按钮有另一个onClick处理程序,它像这样:

$(".optButton").click(function() {
    alert("Testing");
    $("#table1").html(stringB);
});


不用说,单击optButton应该用#table1替换stringB的内容。但是,当我尝试时,它不起作用。我尝试添加alert()进行测试,以查看jQuery是否成功选择了optButton,但是似乎没有,因为我没有从alert()函数中看到弹出窗口。

我的理论是,由于optButton不是原始HTML的一部分,并且在字符串stringA中,因此jQuery无法选择optButton。如果是这样,是否有解决此问题的方法?如果不是,那么造成此问题的真正原因是什么?

最佳答案

您需要使用event delegation,因为您的span元素已动态添加到DOM中:

$('#table1').on('click', '.optButton', function() {
    alert("Testing");
    $("#table1").html(stringB);
});


此技术将帮助您将点击处理程序附加到这些新创建的span元素。

07-24 15:33