繁体   English   中英

事件处理程序多次触发

[英]Event handler firing multiple times

我有这种非常奇怪的情况。 我仅将一次点击侦听器附加到一个单选按钮。 但是,当我单击单选按钮时,侦听器功能将触发两次。 我使用jQuery和普通JS事件处理程序都尝试过,这是同样的问题。

 $("#type_oneway").on("click", function(){ alert('clicked button'); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="radio" id="type_oneway" name="type" value="One Way" class="use_once" checked style="display:none;"> <label for="type_oneway" style="width:74px;">One Way</label> <input type="radio" id="type_roundtrip" name="type"value="Roundtrip" class="use_once" style="display:none;"> <label for="type_roundtrip" style="width:74px;">Round Trip</label> 

当我运行代码并单击按钮时,会收到两个警报。 我似乎无法弄清楚原因。

脚本的另一部分可能会使处理程序分配两次。 在添加新的事件处理程序之前,只需取消可能附加的任何事件处理程序即可。

演示

$("#type_oneway").off('click').on("click", function(){ alert('clicked button'); });

提供的代码对我而言并非如此。 我也清理过了

 $("input").on("click", function(){ alert('clicked button'); }); 
 .use_once { display: none; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="radio" id="type_oneway" name="type" value="One Way" class="use_once" checked> <label for="type_oneway">One Way</label> <input type="radio" id="type_roundtrip" name="type" value="Roundtrip" class="use_once"> <label for="type_roundtrip">Round Trip</label> 

您是否具有带有相同标签的相同元素,这会导致onclick事件触发两次? 那可能就是原因。 您正在使用.use_once选择所有元素,这可能就是为什么它触发两次,单向触发一次,往返触发一次的原因,如果您想一次触发一次,建议您使用jQuery选择器$("#use_once")点击事件的$("#use_once") 您的ID值会有所不同。 更具体地说,例如$("#one_way")$("#round_trip")

您可能两次编写了以下代码。

$("#type_oneway").on("click", function(){alert('clicked button');});

请检查一下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM