萤火虫说我的功能从未跑过 - 无法弄清楚原因

时间:2009-10-28 02:55:58

标签: jquery

当我提交#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");
    });

});

2 个答案:

答案 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会简化代码。

我认为提交正如约翰建议的那样没有任何好处,因为无论如何你都会返回假。