当我提交#top_cat
时,firebug控制台说"ok"
因为我在这里打印的调试文本:
function submitHandler() {
console.log("ok");
$.post($(this).attr('action'), $(this).serialize(), null, "script");
return false;
}
但是,如果我点击#tip_click
,我会在输出中看到"start"
和"end"
,但它永远不会说"ok"
- 这意味着submitHandler
从未运行过。
此代码有什么明显错误吗?
$(document).ready(function () {
$('#top_cat').submit(submitHandler);
$("#tip_click").click(function() {
console.log("start");
$("#high_hat").submit(submitHandler);
console.log("end");
});
});
答案 0 :(得分:2)
$("#high_hat").submit(submitHandler);
这会注册onsubmit
处理程序,但不会运行处理程序。它设置了在提交#high_hat
时调用的处理程序。如果你想立即运行提交处理程序,你需要通过调用submit()
(无参数)自己触发它:
console.log("start");
$("high_hat").submit(submitHandler).submit();
console.log("end");
答案 1 :(得分:0)
为什么不尝试:
$("#tip_click").click(function() {
console.log("start");
submitHandler();
console.log("end);
});
我认为手动提交没有任何好处,因为它无论如何都会返回false,所以直接调用submitHandler会简化代码。
我认为提交正如约翰建议的那样没有任何好处,因为无论如何你都会返回假。