2016-10-04 8 views
-3

Я делаю модальную регистрацию, регистрацию и забыли пароль, и я играю с divs, скрывая и показывая их. Я сделал это trick клонирования содержимого при закрытии модального, но ни один из элементов внутри не отвечает на назначенный им jQuery.Функция jQuery потеряна после применения функции clone()

Это код, который клоны:

var login_modal = $('.md-modal.login-modal'); 
var originalState = login_modal.clone(); 

login_modal.find('.md-close').click(function(){ 
    login_modal.replaceWith(originalState); 
}); 

Это пример кода, который не работает после клонирования:

$('#email-register').click(function() { 
    $('#multi-login-box').hide(); 
    $('#register-box').show(); 
}); 
+1

При клонировании клона плавающих вокруг сына вы должны добавьте его в DOM – zer00ne

+1

Прочтите документы для '.clone()'. –

+0

Я предполагаю, что 'login_modal.find ('. Md-close'). Click (function() {' не будет работать после клонирования? Так как '.md-close'' является частью клона, вы должны клонировать клон ('originalState'), как только клон добавляется к DOM, он больше не существует как клоун ... Я думаю, что есть лучший подход к тому, чего вы хотите достичь, но вы должны добавить более подробную информацию в свой вопрос. –

ответ

-2

Посмотрите на документацию jQuery clone. Вы можете передать bool to .clone для копирования обработчиков.

EDIT: Вам нужно будет присоединить обработчик к исходному элементу перед клонированием, а также выполнять глубокий клон:

login_modal.clone(true, true); 
+0

it не имеет каких-либо событий во время клонирования. –

+1

@RobertParham: Как вы это знаете? –

+0

@RobertParham имеет право с момента появления клона, а затем обработчик прикрепляется к следующей строке. OP нужно будет перевернуть -flop the. –

0

Основная проблема, которая является видеть, что вы назначаете обработчик к оригиналу элементы после вы клонировали его. Таким образом, у клона не будет границ этих обработчиков. (вы также должны сказать .clone метод, который вы хотите обработчики быть клонированы, а также, но это при условии, что у вас уже есть некоторые обработчики, связанных во время клонирования)

+1

Откуда вы знаете, когда обработчики связаны. OP показывает обработчик, о котором идет речь, в отдельном кодовом блоке. Я не думаю, что мы можем предположить, что это тот же порядок в фактическом коде. –