2013-07-19 3 views
1

Я пытаюсь использовать jQuery, чтобы сделать это так, что когда я нажимаю на элемент, он выдвигается, и создается новый элемент, который скользит вниз на свое место.jQuery: Сдвиньте элемент и замените его

Мой код здесь: http://jsfiddle.net/V4SVt/474/

$('.grab_button').click(function() { 
    $(this).slideUp(function() { 
     $(this).parent().append($('<span class=" grabbed">grabbed</span>').hide()); 
     $(this).parent().children('.grabbed').slideDown(); 
     $(this).remove(); 
    }); 
}); 

Когда я нажимаю на элемент, он скользит отлично, и создается новый элемент, однако он не скользит вниз. Он просто появляется. Если я затем скрою элемент и затем спустил его с помощью консоли WebKit, он будет анимировать правильно. Что здесь не так?

ответ

5

Есть проблемы со скользящими встроенными элементами, особенно если они вставлены динамически и не имеют положения, размера или чего-либо еще.

Попробуйте это:

$('.grab_button').click(function() { 
    var assGrab = $('<span />', {'class':'grabbed', text:'grabbed', style:'display:inline-block;'}); 
    $(this).slideUp(function() { 
     $(this).replaceWith(assGrab.hide()); 
     assGrab.slideDown() 
    }); 
}); 

FIDDLE

+1

+1 для assGrab. – j08691

+0

Есть ли что-то особенно неправильное в коде, который я написал (т. Е. Он не должен работать, даже в теории)? – p0llard

+0

@ jdp407 - на самом деле, если вы использовали div вместо span, ваш код, вероятно, будет работать. – adeneo

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