javascript - 是什么导致我的标签的事件处理程序触发两次?

标签 javascript jquery

发生了什么:

单击该复选框会使代码触发一次(如预期)。 单击标签会导致代码触发两次。

代码:

function ToggleVisibility(ctl) {
  console.info($(ctl).css("background-color"));
  var backgroundColor = $(ctl).css('background-color') === 'rgb(255, 255, 255)' ? 'rgb(255, 165, 0)' : 'rgb(255, 255, 255)';
  console.info(backgroundColor);
  $(ctl).css("background-color",
    backgroundColor);
  console.info($(ctl).css("background-color"));
  console.debug($(ctl));
  console.info("****");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="divTemplate">
  <label onclick="ToggleVisibility(this)" style="background-color: white;"><input type="checkbox" /><span>Checkbox item</span></label>
</div>

这是怎么回事?

最佳答案

您需要将 event.preventDefault(); 添加到事件处理程序的开头。

关于javascript - 是什么导致我的标签的事件处理程序触发两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52897265/

相关文章:

javascript - 重复 div 元素 n 次

javascript - 将一个 div 滑过两个 div

javascript - visual-studio-code 中的自动右括号不适用于 js 和 jsx 文件

javascript - Ajax post to Asmx 中缺少参数

javascript - 无法从弹出窗口运行 JavaScript 行

jquery - Bootstrap Tabs 更改父背景 Jquery

javascript - 为什么输出未定义?

JavaScript 调用不工作

javascript - 在页面重新加载时保留页面数据

javascript - 如何访问返回的数组对象