动态地我将一个公式生成到一个已定义的div-container中,我想抓住发送动作以便用ajax发送。
生成HTML:
<div class="mhuntform">
<form action="/wp-admin/admin-ajax.php" method="POST">
<h2>Title</h2>
<p>A text</p>
<div id="form" style="padding: 5px 0px;">
<p>
<label for="email" style="display: inline-block; margin-right: 10px;">E-Mail</label>
<input type="email" name="email" id="email" placeholder="E-Mail" style="width: 60%;">
</p>
<p>
<button name="mhskl_send" id="mhskl_send">Anmelden</button>
</p>
</div>
</form>
</div>
Formular由admin定义到wordpress-page。在Javascript(jQuery)中我只知道div-container的类名(这里是.mhuntform)。所以在Javascript中我试着抓住这个事件:
// mhuntskl.options.container = '.mhuntform'
$(mhuntskl.options.container).find('form').submit(function(ev){
ev.preventDefault();
var email = $(mhuntskl.options.container).find('input[type="email"]').val();
var res = $.ajax(mhuntskl.options.ajaxurl,{async:false,data:{action:'subscribe',email:email},dataType:'json',type:'POST'}).responseText;
res = $.parseJSON(res);
if (res.success) {
$(mhuntskl.options.container).hide();
}
return false;
}
但不幸的是,提交事件将无法捕获,如果我使用find打印到控制台console.log($(mhuntskl.options.container).find('form'))
,它将仅收到一个空对象。
我在这里弄错了什么?
答案 0 :(得分:0)
如果 console.log($(mhuntskl.options.container).length); 为1且 console.log($(mhuntskl.options.container).find('form ')。length); 为0然后只有一个可能的原因。执行代码时,表单仍然不在 .mhuntform div中。是由另一个JavaScript生成的那个表单。如果没有,那么js代码包含在 $(document).ready 。
中