2015-11-02 4 views
0

Есть ли способ медленно вытеснить родительский элемент и создать дочерний элемент или мгновенно исчезнуть?jQuery: медленно выцветать родительский, показать/скрыть ребенка мгновенно

Я попытался это, но он не работает ..

HTML

<figure> 
    <p>Foo Figure...</p> 
    <figcaption>Bar Caption...</figcaption> 
</figure> 

JQuery

$('figure').hide(); 
$('figure').fadeIn({ 
    duration: 1000, 
    start: function(){ 
     $(this).find('figcaption').show(); 
    }}); 

скрипку

https://jsfiddle.net/cpz3xoej/

+1

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

ответ

2

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

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

$('figure > *').hide(); 
$('figure > *').fadeIn({ 
    duration: 1000, 
    start:function(){ 
     $(this).parent().find('figcaption').show(); 
    } 
}); 
+0

Это работает только при условии, что сама фигура не скрыта. Проблема остается нерешенной. – Rotareti

+0

Вы правы. Это невозможно. – Rotareti

0

вы можете попробовать использовать "полный" метод

$('figure').hide(); 
$('figcaption').hide() 
$('figure').fadeIn({ 
duration: 1000, 
complete:function(){ 
    $(this).find('figcaption').show(); 
}}); 
+0

Это не означает, что ребенок появляется мгновенно. Это заставляет ребенка появляться после завершения затухания. См. Здесь: https://jsfiddle.net/L7kzbdua/ – Rotareti

0

Я слегка измененный код, как показано ниже:

$(document).ready(function() { 
    $('figure').hide(); 
    $('figure figcaption').hide(); 
    $('figure').fadeIn({ 
     duration: 1000, 
     complete: function() { 
      $(this).find('figcaption').fadeIn({duration: 400}); 
     } 
    }); 
}); 

который должен работать, как ожидалось

+0

Это не означает, что ребенок появляется мгновенно. Это заставляет ребенка появляться после завершения затухания. – Rotareti