jQuery回调函数传递事件

时间:2016-03-11 15:39:59

标签: javascript jquery

我有一个点击事件如下,工作正常:

$('#showmenu').off('click').on('click', function(e) {
    e.preventDefault();
    e.stopPropagation();
    show_menu();
    return false;
});

show_menu是:

function show_menu(e) {
    if (!collapseForm.is(':visible')) {
        collapseForm.show();
        showMenu.removeClass(chevronDown).addClass(checvronUp);
        searchAgain.hide();
    } else {
        collapseForm.hide();
        showMenu.removeClass(checvronUp).addClass(checvronDown);
        searchAgain.show();
    }
}

我希望能够做到这样的事情:

$('#showmenu').off('click').on('click', show_menu(e));

是否可以通过执行以下操作将“e”传递给回调函数?

function show_menu(e) {
    e.preventDefault();
    e.stopPropagation();
    if (!collapseForm.is(':visible')) {
        collapseForm.show();
        showMenu.removeClass(chevronDown).addClass(checvronUp);
        searchAgain.hide();
    } else {
        collapseForm.hide();
        showMenu.removeClass(checvronUp).addClass(chevronDown);
        searchAgain.show();
    }
    return false;
}

enter image description here

1 个答案:

答案 0 :(得分:3)

当调用函数时(通过事件触发),事件对象被传递给函数。

您必须将功能传递给on方法。

$('#showmenu').off('click').on('click', show_menu);