在函数中使用'$(this)'

Com*_*ker 11 jquery function this

我正在创建一个使用jQuery打开和关闭的菜单.简单来说,它的工作原理如下:

function open_menu() {
    $(this).next('ul.sub-menu').css('display', 'block').stop(true, false).animate({
        width: '235px',
    }, 500);
}

function close_menu() {
    // close code here
}

status = 'closed'; // set the default menu status

$('a').click(function() {
    switch(status) {
        case 'closed':
            open_menu();
            break;
        case 'open':
            close_menu();
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我拿的内容open_menu()并把它代替open_menu().click()情况下,预期每个作品.如果我使用上面显示的代码,$(this)无法弄清楚是否.click()解雇了它并且代码没有运行.

我可以做些什么来让$(this)选择器在保持它的同时协商解雇它的东西open_menu()

Ale*_*rge 21

this你指的open_menu是在上下文open_menu功能,而不是链接的点击处理程序.你需要做这样的事情:

open_menu(this);

function open_menu(that) {
    $(that).next(...
Run Code Online (Sandbox Code Playgroud)


Jam*_*gne 5

您可以使用apply来设置this函数中的值.

open_menu.apply(this)
Run Code Online (Sandbox Code Playgroud)