Using '$(this)' In A Function

后端 未结 3 1189
无人及你
无人及你 2020-12-07 00:55

I am creating a menu that opens and closes using jQuery. In simple terms, it works like this:

function open_menu() {
    $(this).next(\'ul.sub-menu\').css(\'         


        
相关标签:
3条回答
  • 2020-12-07 01:26

    You can use apply to set the value of this in the function.

    open_menu.apply(this)
    
    0 讨论(0)
  • 2020-12-07 01:41

    Why not just pass it in as a parameter?

    function open_menu($this) {
        $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($(this));
                break;
            case 'open':
                close_menu();
                break;
        }
    }
    
    0 讨论(0)
  • 2020-12-07 01:53

    The this that you refer to in open_menu is the context of the open_menu function, not the click handler of the link. You need to do something like this:

    open_menu(this);
    
    function open_menu(that) {
        $(that).next(...
    
    0 讨论(0)
提交回复
热议问题