Javascript 使用jQuery进行少量ajax请求后,live()、delegate()和on()停止工作
我有ajaxem类的html元素,这些元素将在下面的jquery中使用。对于任何表单元素,我也有相同的方法。对于前几个ajax请求,jquery被附加和触发并正常工作。但是,在用户登录或注册后,jquery不会捕获并触发返回的链接,这些链接也具有class=ajaxem 我已经尝试了所有三种实现。并尝试在每次ajax请求后重新应用它们。但没有一个成功Javascript 使用jQuery进行少量ajax请求后,live()、delegate()和on()停止工作,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我有ajaxem类的html元素,这些元素将在下面的jquery中使用。对于任何表单元素,我也有相同的方法。对于前几个ajax请求,jquery被附加和触发并正常工作。但是,在用户登录或注册后,jquery不会捕获并触发返回的链接,这些链接也具有class=ajaxem 我已经尝试了所有三种实现。并尝试在每次ajax请求后重新应用它们。但没有一个成功 <script type="text/javascript"> function updateajaxem() { $(d
<script type="text/javascript">
function updateajaxem() {
$(document).on("click", "a.ajaxem", function (e) {
e.preventDefault();
var action = $(this).attr('href');
//alert(action);
if (action.indexOf('register') > 0) {
$("div#logininfo").load("http://localhost/testrun/auth/register/").fadeIn();
} else if (action.indexOf('password') > 0) {
$("div#logininfo").load("http://localhost/testrun/auth/forgot_password/").fadeIn();
}
}); //end
}
</script>
<script type="text/javascript">
updateajaxem();
//$("a.ajaxem").live("click", function(e){
$(document).on("click", "input:submit", function (e) {
e.preventDefault();
var formaction = $(this).closest('form').attr('action');
var dataString = $(this).closest('form').serialize();
alert(dataString);
//$("div#logininfo").load(formaction,data);
$.ajax({
type: "POST",
url: formaction,
data: dataString,
// dataType: "json",
success: function (data) {
alert(data);
$("div#logininfo").html(data);
updateajaxem();
} // end of success
});
});
</script>
这是没有意义的,因为它包含了ajaxem类,该类应该被jquery捕获,但不是。因为返回的链接的href不包含单词“register”或“password”,以下两个条件都不满足:
if (action.indexOf('register') > 0) {
$("div#logininfo").load("http://localhost/testrun/auth/register/").fadeIn();
} else if (action.indexOf('password') > 0) {
$("div#logininfo").load("http://localhost/testrun/auth/forgot_password/").fadeIn();
}
因此没有ajax请求发生
您可能需要考虑“登录”场景,例如:
} else if (action.indexOf('login') > 0) {
$("div#logininfo").load("http://localhost/testrun/auth/login/").fadeIn();
}
…既然可以从单击的锚中提取URL,为什么还要硬编码URL
if (action.indexOf('register') > 0) {
$("div#logininfo").load(this.href).fadeIn();
} else if (action.indexOf('password') > 0) {
$("div#logininfo").load(this.href).fadeIn();
} else if (action.indexOf('login') > 0) {
$("div#logininfo").load(this.href).fadeIn();
}
现在,您可能还会注意到最终if/elseif语句的分支中有一个相似之处。。。还有更多的重构-@克里斯-同意。我实际上认为if语句是多余的,因为所有的分支至少在示例代码中都做相同的事情。当然,它在else上什么也不做,但我不确定是否只是删除整个if检查,而只支持$divlogininfo.loadthis.href.fadeIn;可能不会更好。。。
if (action.indexOf('register') > 0) {
$("div#logininfo").load(this.href).fadeIn();
} else if (action.indexOf('password') > 0) {
$("div#logininfo").load(this.href).fadeIn();
} else if (action.indexOf('login') > 0) {
$("div#logininfo").load(this.href).fadeIn();
}