如何在jQuery中完成之前的功能后才能运行这些功能?

时间:2013-03-27 09:26:18

标签: jquery

我有一个悬停事件,在悬停时,我需要设置subnav的大小,根据它的宽度为它添加一个类,然后显示subnav。麻烦的是,就像现在一样,它显示了第一个悬停时具有原始大小的subnav,然后当我再次悬停它时,它已经调整了subnav的大小。

那么如何在上一次完成之后将3个事物链接起来:

  1. setSubNavWidth2()
  2. setSubMenuPos()
  3. $(this).children('。sub-menu-div')。css('visibility','visible');

     $('.dir').hover(        
            function(){
              if($(this).children('.sub-menu-div').length>0){
                 var subnav=$(this).children('.sub-menu-div');
                 setSubMenuPos(subnav);
                 setSubNavWidth2(subnav);
                   $(this).children('.sub-menu-div').css('visibility', 'visible');
              }              
                $(this).children('.top-level-link').addClass('hoverstyle');              
            },
          function(){
                 $(this).children('.sub-menu-div').css('visibility', 'hidden');
                 $(this).css('background-color','transparent')
                 $(this).children('.top-level-link').removeClass('hoverstyle');
    
            }
        );      
    
    function setSubNavWidth2(element){
         var sub_nav_width = various calculations that set sub nav width
           $(element).width(sub_nav_width );
    }
    
     function setSubMenuPos(element){
           //set posiiton of menu
                var position = $(element).parent().position();
                var xPos = position.left;
                var width = $(element).width();
                var parentWidth = $(element).parent().width();
                var newXpos = xPos + parentWidth;
                if(xPos + width > 950 ){                
                      $(element).removeClass('left');
                       $(element).addClass('right');
                }
    
    
        }
    

0 个答案:

没有答案