我正在尝试使用包含当前任务的文本的对象数组来创建交互式教程。
文本创建任务并动态附加按钮。
让……
你可以使用如下:
$("body").find(".button-next").on('click', function(){ // your code here })
您遇到了将click事件绑定到运行时不存在的元素的经典问题。在评估脚本时,元素 .button-next 尚未出现在DOM中,因此click事件回调不会绑定到按钮。
.button-next
你想要的是依靠事件冒泡:你想要监听运行时出现的元素,并查看click事件是否已从动态插入的按钮冒泡到静态元素。
由于按钮实际上是作为子节点注入的 #suggestion ,和 #suggestion 保证在运行时出现在DOM中,你可以听到冒泡到的点击事件 #suggestion 元素代替:
#suggestion
$('#suggestion').on('click', '.button-next', () => { currentTutorialCount += 1; tutorial[currentTutorialCount].set(); });
一个有用的提示:始终选择 的 最接近的静态DOM元素 强> 绑定事件监听器时。强烈建议不要听冒泡的叛逆 document 要么 body ,因为它很昂贵(JS引擎必须遍历所有子节点才能找出发出事件的那个节点)。
document
body