抱歉,如果该问题引起误解,我找不到更好的方式来描述我的问题。无论如何,这里是:
假设我有一个按钮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
元素。