2013-04-16 4 views
3

Я использую jQuery для анимации все время, но на этот раз он по какой-то причине не работает. Он будет работать, я пытаюсь настроить «$ (this) .animate» после щелчка closeBtn, и он будет работать, как бы то ни было.Почему моя анимация jQuery не работает?

здесь часть моей HTML (в relivant части, да и я назвал библиотеку JQuery)

<div id='lightBox' style="opacity:0;"> 
    <div id='closeBtn'> 
    </div> 
    <div id='lightBoxContent'> 
    </div><!--lightBoxContent--> 
</div><!--lightBox--> 

вот мой JQuery

$(document).ready(function() 
{ 
    $('#quoteBtn').click(function() 
    { 
     $('#lightBox').animate({ 
      opacity:'1', 
      height:'560px' 
     }, 300, function() { 
      $('#lightBoxContent').html(output); 
     }); 


     $('#closeBtn').click(function() 
     { 
      //alert('click'); 
      $('#lightBox').animate({ 
       opacity:'0' 
      }, 300, function() { 
       //alert('first animation complete'); 
       $('#lightBox').animate({ 
        height:'0px' 
       }, 300, function() { 
        //alert('second animation complete'); 
       }); 
      }); 
     }); 
    }); 
}); 

и мой CSS (это не на самом деле это требование, но я включил его для безопасной меры

#lightBox { 
    width:780px; 
    background-color:white; 
    position:fixed; 
    margin-left:-400px; 
    margin-top:-300px; 
    left:50%; 
    top:50%; 
    z-index:9999; 
    -webkit-box-shadow: 0px 0px 200px 50px ; 
    box-shadow: 0px 0px 200px 50px ; 
    padding:20px; 
} 
+0

Вы использовали эти идентификаторы только один раз, верно? – adeneo

+0

Вы пробовали console.log ("test"); в разных шагах, чтобы увидеть, какая строка вашего кода разрушается? или вы взглянули на консоль, чтобы увидеть, есть ли какие-либо ошибки? – ntgCleaner

+2

Для таких вещей вы также должны создать jsfiddle. Делает нашу жизнь проще. – user1048676

ответ

4

Вы хотите переместить $('#closeBtn').click(function() вне функции мыши() вызывается, когда #quoteBtn является щелчок. Потому что он никогда не будет вызван, так как вы не можете щелкнуть внутри щелчка.

Вот что он должен выглядеть следующим образом:

$(document).ready(function() 
{ 
    $('#quoteBtn').click(function() 
    { 
     $('#lightBox').animate({ 
      opacity:'1', 
      height:'560px' 
     }, 300, function() { 
      $('#lightBoxContent').html(output); 
     });  
    }); 

    $('#closeBtn').click(function() 
    { 
     //alert('click'); 
     $('#lightBox').animate({ 
      opacity:'0' 
     }, 300, function() { 
      //alert('first animation complete'); 
      $('#lightBox').animate({ 
       height:'0px' 
      }, 300, function() { 
       //alert('second animation complete'); 
      }); 
     }); 
    }); 

}); 

Update: Ok ... Вот часть 2.

Вы хотите установить $('#lightBox').animate({ в $('#lightBox').stop().animate({, который будет затем продолжить «закрыть "анимация.

+0

Я не могу поверить, что это выглядело так! Но он все еще не работает. –

+0

Что еще не работает? – doitlikejustin

+0

Хорошо, думаю, я понял. Обновлен мой ответ – doitlikejustin

0

Исправьте меня, если я ошибаюсь, но попробуйте чанг ИНГ это:

position: fixed; 

к position: absolute; или position: relative;

+0

позиция: фиксированная; заставляет меня немного нервничать. Я знаю, если вы не установите элемент в позицию: relative или position: absolute в css, jQuery не будет анимировать его. Просто не уверен в позиции: исправлено. –

+0

Я использовал исправление, потому что я всегда хочу, чтобы панель была в фокусе, поэтому пользователи не могут прокручивать ее, это своего рода лайтбокс. Я использовал этот метод раньше и исправил работу с jquery animate.Yes, все идентификаторы используются только один раз в документе. Я использую alert() для тестирования. –

Смежные вопросы