2013-10-04 4 views
0

Я пытаюсь создать практичный карточный дизайн, и я застрял в анимации добавления в руку. На этот раз я подумал, что использование append и добавление четных обработчиков будет работать, но оказалось, что он работает только для последнего добавленного элемента (в данном случае li). вот код на jsfiddle для облегчения тестирования ..jQuery Append events issue

Код:

$('.deck .card').on('click', function() { 
    // $(this).appendTo('.hand') 
    $('.hand').append(this) 
    $('.hand .card').on('click', function(){ 
     $(this).addClass('flip') 
    }) 
}) 

Я попытался переместить событие щелчка для руки вне палубы, но это не работает. также, вот код в jsfiddle для более легкого тестирования http://jsfiddle.net/FAZUc/9/

спасибо.

+0

Weird ... если вы нажмете очень быстро он начинает листать в обратном порядке – tymeJV

+0

Просто удалите событие щелчка на щелкнутом элементе, прежде чем добавить новую. Кроме того, используйте только объект с щелчком. '$ (this) .off ('click'). on ('click', ...' http://jsfiddle.net/FAZUc/16/ –

ответ

4

Удалите событие щелчка с элемента, щелкнувшего элемент, а затем добавьте новое событие click только в элемент с щелчком.

$('.deck .card').on('click', function() { 
    // $(this).appendTo('.hand') 
    $('.hand').append(this) 
    $(this).off('click').on('click', function(){ 
     $(this).addClass('flip') 
    }) 
}) 

http://jsfiddle.net/FAZUc/16/

делегация событий делает его еще проще.

$('.deck').on('click', '.card', function() { 
    $('.hand').append(this) 
}); 
$('.hand').on('click','.card', function(){ 
    $(this).addClass('flip') 
}); 

http://jsfiddle.net/FAZUc/18/

+0

Это не работает правильно, некоторые ошибки – Johan

+0

, что такое ошибки? –

+0

Ive добавил несколько карточек, и он полностью проиграл событие – Johan