Javascript jquery:在多次调用eventhandler时

Javascript jquery:在多次调用eventhandler时,javascript,jquery,checkbox,event-handling,Javascript,Jquery,Checkbox,Event Handling,我希望做以下工作: 创建一个列表(ul和li)。然后单击ul,我想根据条件插入div,即如果选中了复选框,则创建一个带有4个复选框的div 如果从列表中选择了radio,则会创建一个带有4个收音机的div 以下是我的jquery代码: var addDiv=document.createElement("div"); $("#id-ul").click(function(){$('#sidr-bottom').hide(); var div_id=0; addDiv=docum

我希望做以下工作: 创建一个列表(ul和li)。然后单击ul,我想根据条件插入
div
,即如果选中了
复选框
,则创建一个带有4个复选框的
div

如果从列表中选择了
radio
,则会创建一个带有4个收音机的
div

以下是我的jquery代码:

var addDiv=document.createElement("div");

  $("#id-ul").click(function(){$('#sidr-bottom').hide();
   var div_id=0;
   addDiv=document.createElement("div");
   $( "#A_MULTI" ).on( "click", { divId:addDiv }, myHandler );
   $( "#A_RADIO" ).on( "click", { divId:addDiv }, myHandlerRadio );
   addDiv.id = "div_multi"+div_id; ...
复选框处理程序:

function myHandler( event ) {
   alert("check : "+ event.data.divId );}
无线电处理器:

function myHandlerRadio( event ) {
    alert("radio:"+ event.data.divId );}
现在的问题是,当我第一次单击列表
中的
复选框时,
myhandler
没有被调用

当我再次单击它时,处理程序会被调用一次

当我再次单击它时,处理程序会被调用两次

这种奇怪行为的原因是什么

请让我知道如何解决这个问题

编辑:

我将下面两行移到
#id ul
单击外

$(“#A#u MULTI”)。在(“单击”{divId:addDiv},myHandler)上;
$(“#A#RADIO”)。在(“单击”{divId:addDiv},myHandlerRadio)

我仍然面临同样的问题。

这是因为每次单击
#id ul
时,您都在分配事件处理程序


请将事件移到事件处理程序之外。

问题是,您正在添加处理程序,但从未清除它们。您应该这样做:

   $( "#A_MULTI" ).off("click").on( "click", { divId:addDiv }, myHandler );
   $( "#A_RADIO" ).off("click").on( "click", { divId:addDiv }, myHandlerRadio );

在分配新的处理程序之前删除旧的处理程序。

但是如何将div传递给处理程序?div指示#id ul单击。请让我知道。@z22是否要为每个事件处理程序传递不同的数据?当您创建div事件类型时,单击事件被触发。您不需要在其他事件处理程序中使用div的id访问div。简单一点。不要将数据传递给事件处理程序。使用IDY访问div,但要同时传递id,我必须在id中写入事件。单击,对吗?@z22不,我的朋友..只需在其他事件处理程序中使用新创建的div id即可访问它