JQuery GET请求生成的submitOneTimePassword按钮点击无响应怎么解决?
问题原因
你的点击事件绑定逻辑是在页面初始化阶段执行的,但id=submitOneTimePassword的按钮是AJAX请求成功后才动态插入到DOM中的,初始页面中不存在该元素,因此普通的.click()绑定无法匹配到目标元素,事件不会生效。
解决方案
推荐使用事件委托的方式绑定事件,将事件绑定到页面初始就存在的父级元素上,jQuery会自动监听匹配子元素的事件,不受元素动态插入的影响:
// 把事件委托给页面初始就存在的#set_authenticator容器,也可以用document作为父级 $("#set_authenticator").on("click", "#submitOneTimePassword", function() { alert('here'); });
你也可以选择把绑定逻辑放到DOM插入逻辑之后,放在AJAX的回调函数里执行:
$( "#enable_authenticator" ).click(function() { $.get("{{route('generateSecret')}}", function(data, status){ $('#Authenticator_alert').hide(); $('#enable_authenticator').hide(); $( "#set_authenticator" ).html('<center>'+data[0]+'<br>'+'Your Authenticator Secret is: <strong>'+data[1]+'</strong> <br> <input type="text" placeholder="One Time Password" id="onetimepassword" class="form-control"><br> <button type="button" id="submitOneTimePassword" class="btn btn-warning">Submit</button></center>'); // 插入DOM后再绑定事件 $('#submitOneTimePassword').click(function() { alert('here'); }); }); });
内容的提问来源于stack exchange,提问作者masternode
相关产品推荐
相关产品推荐

