我试图用Javascript编写一个视频扑克游戏作为一种获取它的基础知识的方法,并且我遇到了jQuery点击事件处理程序多次触发的问题.
它们附在用于下注的按钮上,并且它适用于在比赛期间在第一手牌上下注(仅发射一次); 但是在投注秒针时,每次按下下注或下注按钮时,它都会触发点击事件两次(因此每次按下两次正确的金额).总的来说,它遵循这种模式,按下一次下注按钮时点击事件被触发的次数 - 其中序列的第i个术语是从游戏开始时第i个手的投注:1,2,4 ,7,11,16,22,29,37,46,对于任何值得的东西来说似乎是n(n + 1)/ 2 + 1 - 而且我还不够聪明,我用过OEIS.:)
这是使用单击事件处理程序的函数; 希望它很容易理解(如果没有,请告诉我,我也希望在这方面做得更好):
/** The following function keeps track of bet buttons that are pressed, until place button is pressed to place bet. **/
function pushingBetButtons() {
$("#money").text("Money left: $" + player.money); // displays money player has left
$(".bet").click(function() {
var amount = 0; // holds the amount of money the player bet on this click
if($(this).attr("id") == "bet1") { // the …Run Code Online (Sandbox Code Playgroud) 我有一个带有 2 个按钮的简单页面,每个按钮使用以下方法代码远程填充模态的内容
$("button").click( function(e) {
e.preventDefault();
var remoteLoc = $(this).attr('data-loc');
$("#myModal .modal-content").load(remoteLoc, function() {
$("#myModal").modal("show");
});
});
$('#myModal').on('hidden.bs.modal', function (e) {
$("#myModal .modal-content").empty();
});
Run Code Online (Sandbox Code Playgroud)
正在加载的内容的一个简单示例是:
<div class="modal-body">
<a id="tomtest" href="#">Test link</a>
<p>dfghdfgh dfgh dfgh dfgh dfgh dfgh dfgh dfg h</p>
</div>
<script type="text/javascript">
$(document).on("click", "a#tomtest", function(e) {
e.preventDefault();
alert(123);
});
</script>
Run Code Online (Sandbox Code Playgroud)
问题是,自从页面加载以来,警报触发的次数与我打开模态的次数一样多。
我能做些什么来阻止这种情况发生?
编辑!!!
根据@paulitto 的回答,我修改了代码以在模态内容中添加动态创建的链接。
<div class="modal-body">
<a id="tomAdder" href="#">Add alert link</a>
<p>dfghdfgh dfgh dfgh dfgh dfgh dfgh dfgh dfg h</p>
</div>
<script type="text/javascript">
$("a#tomAdder").on("click", function(e) {
e.preventDefault(); …Run Code Online (Sandbox Code Playgroud)