在完全加载HTML之后,我在表单submit上调用ajax,得到的结果是:
<a data-nonce="https://hypley.com?wp_nonce=2db70bc9fb" id="resend_email">here</a></strong>现在,再次调用该链接上的ajax:
$("#resend_email").on("click", function (e) {
e.preventDefault();
alert(1);
var user_login = $("#user_login").val();
console.log( user_login );
});但这不起作用,我的意思是至少不给我看警报。
你知道为什么吗,我该怎么解决呢?
发布于 2020-09-16 15:05:32
我假设您在AJAX运行之前设置了JS,对吗?在这种情况下:使用委托事件代替。
$(document).on("click", "#resend_email", function (e) { // <-- see second argument of .on
e.preventDefault();
alert(1);
var user_login = $("#user_login").val();
console.log( user_login );
});它不能工作的原因是,当DOM被构造并且从jQuery返回的jQuery集合为空时,#resend_email无法找到id #resend_email的元素(它的长度为0)。这意味着,您附加的单击处理程序没有可以附加到的元素,因此jQuery不附加事件侦听器。
简而言之:委托事件通过将侦听器附加到已经存在的元素来解决该问题,并在调用处理程序时扫描事件目标元素。如果它与指定的选择器匹配,则调用处理程序。您可以了解委托事件以及jQuery文档中的工作方式。
https://stackoverflow.com/questions/63922840
复制相似问题