2013-09-07 3 views
0

У меня есть слайд, который я хочу переместить вниз, когда вы нажимаете div в нижней части, и создавайте резервную копию, если вы снова нажмете его. Я использую этот jquery, но вторая функция ничего не делает.JQuery не работает после addClass

$('#form-toggle').click(function(){ 
    $('#form-index').animate({ 
    marginTop:"+300", 
    }); 
    $('#form-toggle').addClass("close-form"); 
}); 
$('.close-form').click(function() { 
    $('#form-index').animate({ 
    marginTop:"-300px", 
    }); 
    $('#form-toggle').removeClass('close-form'); 
}); 
+0

Не уверен, если это имеет значение, но есть конкретная причина, у вас есть MarginTop: «+300» без рх на первой, а не На втором? – MitulP91

+0

Поскольку вы добавляете класс, вам нужно делегировать событие. – tymeJV

ответ

0

Как об упрощении его:

var animateOption = {marginTop : -300}; 
$('#form-toggle').click(function(){ 
    animateOption.marginTop = -animateOption.marginTop; 
    $('#form-index').animate(animateOption); 
}); 
+0

Есть ли способ для этой функции добавить или вычесть 300px из текущего поля вместо того, чтобы установить маржу на 300/-300? – user2407400

+0

'animateOption.marginTop = -parseInt ($ ('# form-index'). Css ('margin-top'));' 'parseInt' используется в случае, когда margin задается в px. –

2

Вы динамически добавлять класс к элементу, и ваш сценарий прикрепляет обработчик события клика, прежде чем такой класс доступен на элементе.

Попробуйте делегировать мероприятие по методу.

$('.parent-class').on('click', '.close-form', function() { 
    .... 
}); 
+0

Хорошо, я изменил вторую функцию для использования .on, и она работает в первый раз, но если вы снова нажмете на # form-toggle после ее закрытия, она оживит вниз и создаст резервную копию. – user2407400