使用 jquery.on() 时我有奇怪的行为。
基本上,只是尝试创建一个时事通讯注册表单(可以动态生成,并且在初始 DOM 加载时不存在)并在 Ajax 中传递详细信息,但它没有注册第一次单击提交按钮,这意味着用户成功提交必须单击两次(仅在第二次单击时看到成功消息和“订阅”帖子)。
的HTML:
<div class="newsletter-widget grid-item masonry-brick">
<input name="Email" type="email" placeholder="Please enter your email" required />
<input type="submit" value="Subscribe" class="newslettersubmit"/>
和 javascript(准备好文档);
var newsletterFocus = $('.newsletter-widget').find('input[type=submit]');
$(document).on('submit', newsletterFocus, function (e) {
e.preventDefault();
var newsletterLinks = newsletterFocus;
DD.newsletter.behavior(newsletterLinks);
});
以及对象内被调用的函数;
DD.newsletter = {
behavior: function (item) {
item.click(function (e) {
e.preventDefault();
var where = $('.newsletter-widget').find('input[type=submit]').parents('section').attr('id');
var email = $(this).siblings('[name$=Email]'),
emailVal = email.val();
DD.newsletter.subscribe(email, emailVal, where);
});
},
subscribe: function (self, email, where) {
$.ajax({
type: "POST",
data: '{"email":"' + email + '", "method":"' + where + '"}',
url: '/Subscriber/Subscribe',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
self.val(response);
},
failure: function (msg) {
self.val(msg);
}
});
},});
我尝试使用“点击”作为 on() 的操作,但这会在每次点击时注册一个事件,并且我会提交数千个表单!
任何帮助表示赞赏!