-1

动态地,我在定义的 div 容器中生成一个公式,我想获取发送操作以使用 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>

公式由管理员定义到 wordpress 页面中。在 Javascript (jQuery) 中,我只知道 div 容器的类名(此处为 .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'))中,它将只收到一个空对象。

我在这里做错了什么?

4

1 回答 1

0

如果console.log($(mhuntskl.options.container).length); 是 1 和console.log($(mhuntskl.options.container).find('form').length); 为 0 则只有一个可能的原因。执行代码时,您的表单仍然不在.mhuntform div 中。该表单是由另一个 javascript 生成的吗?如果不是,那么 js 代码是否包含在$(document).ready中。

于 2013-09-04T07:24:36.297 回答