javascript - 是什么导致我的标签的事件处理程序触发两次?
问题描述
怎么了:
单击复选框会导致代码触发一次(如预期的那样)。单击标签会导致代码触发两次。
编码:
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();
到事件处理程序的开头。
推荐阅读
- java - Java 数组与数组列表
- c++ - 为什么我们不把所有的动态内存都保存在数组中呢?
- python - 将 finditer() 输出放入数组
- c# - 如何修复 dotnet Core 中 MySQL 连接器的“无法解析类型”错误
- python - Bokeh 给了我一个带有 ColumnDataSource 的空图
- html - 无法加载css文件
- python - 如果我缓存一个 Spark Dataframe 然后覆盖引用,原始数据帧还会被缓存吗?
- c# - 无法从移动应用程序连接到 api 端点
- debugging - Dialogflow Flutter Chatbot - NoSuchMethodError:在 null 上调用了方法“[]”
- c# - Linq查询更新符合我条件的组中的所有项目