【发布时间】:2020-02-22 13:22:23
【问题描述】:
我有一个迷宫我正在努力排序:
我有这个带有 12 个锚标记的网格
for (let i = 1; i <= 12; i++) {
$("#minuetti").append(
`<div class="col-6 col-md-3"> <a id="minuetto${i}" class="btn btn-primary btn-lg mb-1 minuetto">Minuetto ${i}</a></div>`
);
}
每一个都将使用 Howler.js 播放不同的 mp3 文件。
$(".minuetto").on("click", function() {
let id = this.id;
let minuettoPath = `assets/music/${id}.mp3`;
let cell = new Howl({
src: [minuettoPath],
onplay: function() {
$(`#${id}`).text("Stop");
$(".minuetto").addClass("disabled");
$(`#${id}`).removeClass("disabled");
$(`#${id}`).removeClass("minuetto");
$(`#${id}`).on("click", function() {
cell.stop();
});
},
onend: function() {
$(".minuetto").removeClass("disabled");
$(`#${id}`).text(`Minuetto ${id.slice(8)}`);
$(`#${id}`).addClass("minuetto");
this.unload();
}
});
cell.play();
});
我的问题:
我正在尝试更改单击按钮的文本并使其保持启用状态。
我将禁用所有剩余的 (11) 按钮,直到 mp3 文件结束。
但是当我点击启用的按钮(播放的那个)而不是停止我的 mp3 时,它会重新启动。
我在这里的 jQuery 做错了什么?我引用我的 id 并调用函数来执行 cell.stop() 但由于某种原因 jQuery 再次运行播放,即使我从播放按钮中删除了 minuetto 类。
我真的很困惑。请帮忙?
【问题讨论】:
-
PS:永远不要在循环中追加或构造 DOM。连接字符串或数组并在循环之后追加一次。
-
非常感谢@RokoC.Buljan,我会调查的。但这不会解决我与 jQuery 和 Howler 的斗争。无论如何,你所说的很有趣,我对此很陌生,很想知道如何用适当的方法来达到同样的效果。 :)
标签: javascript jquery howler.js