2012-03-15 3 views
0

У меня есть этот JQuery код:Использование .animate и .css или просто один в JQuery

var help; 
    $('.helpPin').click(function(){ 

     if(help == true){ 
      var cssObj = { 
       'position' : 'absolute', 
       'bottom' : '0' 
      }; 
      $('#help').css(cssObj); 
      help = false; 
     } else { 
      var cssObj = { 
       'position' : 'absolute', 
       'bottom' : '-206px' 
      }; 
      $('#help').css(cssObj); 
      help = true; 
     } 
    }); 

Это в основном только SWAPS CSS для элемента, как я могу представить анимировать эффекты так что его не слишком рывками? Можете ли вы использовать .css внутри .animate?

+2

[ 'toggleClass'] (HTTP : //api.jquery.com/toggleClass/) было бы лучше. –

+0

@RobW Как так? спасибо – benhowdle89

+0

Посмотрите документацию. Для анимированной версии используйте [jQuery UI 'toggleClass'] (http://jqueryui.com/docs/toggleClass/). –

ответ

3

Прежде всего, addinga/изменении свойств CSS непосредственно в JQuery считается плохой практикой. Все, что вам нужно сделать, это установить позицию на элемент в вашем CSS:

CSS

#help { 
    position: absolute; 
} 

Вы можете реорганизовать JQuery код, чтобы сократить его вниз резко, а также анимировать элемент в соответствии с требованиями:

var help; 

$('.helpPin').click(function(){ 
    var bottom = help ? '0' : '-206px'; 
    $("#help").animate({ 'bottom' : bottom }); 
    help = !help; 
}); 
+3

Короткие, умные, эффективные. * tip tip * – benhowdle89

+0

help =! help; можете ли вы подробно рассказать об этом немного? Установляет ли она переменную в противоположность ее текущему значению? – benhowdle89

+0

@ benhowdle89 это правильно - оно инвертирует логическое значение. –

0

Попробуйте ввести код более и менее эффективный.

var help; 
    $('.helpPin').click(function(){ 

     if(help == true){    
      $('#help').css({ 
       'position' : 'absolute', 
       'bottom' : '0' 
      }).animate(); 
      help = false; 
     } else { 
      $('#help').css({ 
       'position' : 'absolute', 
       'bottom' : '-206px' 
      }).animate(); 
      help = true; 
     } 
    }); 

Надеюсь, вы ищите то же самое.

+0

'.animate()' имеет другой синтаксис: http://api.jquery.com/animate/ – m90

+0

Я дал вам логику о том, как начать. Какую анимацию вы хотите? Вы хотите, чтобы я дал точный код? Ваш код существует на jsfiddle? –

2

working demo

#help 
{ 
    position: absolute; 
} 

$('.helpPin').click(function(){ 
     if(help == true){ 
      $('#help').animate({"bottom": '0'}); 
      help = false; 
     } else { 
      $('#help').animate({"bottom": '-206px'}); 
      help = true; 
     } 
    }); 
0

Вы должны установить положение с помощью CSS, в то же время ......

var help; 
$('.helpPin').click(function() { 

    var bottom = (help) ? '0' : '-206px'; 

    $('#help') 
      .css({ 'position': 'absolute' }); 
      .animate({ 'bottom': bottom }); 

    help = !help; 
}); 
Смежные вопросы