很抱歉,如果这个问题具有误导性,我找不到更好的方式来描述我的问题。无论如何,这里是:
假设我有一个按钮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
。如果是这样,是否有解决此问题的方法?如果不是,问题的实际原因是什么?
答案 0 :(得分:4)
您需要使用event delegation,因为您的span
元素已动态添加到DOM中:
$('#table1').on('click', '.optButton', function() {
alert("Testing");
$("#table1").html(stringB);
});
此技术将帮助您将点击处理程序附加到这些新创建的span
元素。