Javascript jquery:在多次调用eventhandler时
我希望做以下工作: 创建一个列表(ul和li)。然后单击ul,我想根据条件插入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
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即可访问它