2016-09-08 14 views
3

hereのようにカルーセルを作成することができます。カルーセルが現れ、正しく動作します。既存のマテリアライズ・カルーセルにスライドを動的に追加できますか?

後で私は、追加のスライドを追加したいと思います:
$(".carousel").append('<a class="carousel-item active" href="#six!"><img src="http://lorempixel.com/250/250/nature/6"></a>');

しかし、これはスライドがカルーセルに追加されませんように動作するためには表示されません。

サポートされていない初期化カルーセルにスライドを追加していますか、これが私の目的ですか?

答えて

6

ありがとうございます。私はインターネットで何も解決策を見ていない。私はより良いとスムーズな解決策があるかもしれないと信じていますが、これは私のものです。

あなたがする必要があることは、新しいアイテムを追加した後に、既に初期化されたメインカルーセルdivからinitializedクラスを削除して再初期化することだけです。

//init carousel 
var slider = $('.carousel'); 
slider.carousel(); 

//add a new item 
slider.append('<a class="carousel-item active" href="#three!"><img src="http://lorempixel.com/250/250/nature/3"></a>'); 

//remove the 'initialized' class which prevents slider from initializing itself again when it's not needed 
if (slider.hasClass('initialized')){ 
    slider.removeClass('initialized') 
} 

//just reinit the carousel 
slider.carousel(); 

完全に動作するフィドル:https://jsfiddle.net/8tq4ycm3/

+1

ブリリアント、ありがとうございました!あなたのソリューションに基づいていますが、より速い読み込みイメージを使ってその効果を表示する[Fiddle](https://jsfiddle.net/wavtace7/1/)があります。 –

+0

ありがとうございました!本当に役に立ちました。 –

+0

@PavelPotoplyakには以前の状態を維持する方法がありますか?それを再初期化すると、スライダーは最初のスライドに移動します。私たちがどのスライドを取得する方法はありますか? –

0

私は同じ問題を抱えていたが、私は、スライダを使用しています。 (http://materializecss.com/media.html#slider

これを解決するには、それは明らかすべての項目、新しいもの、そして再結合し、スライダー再度追加アイテムする必要がありました。

フォロー例:https://codepen.io/troits/pen/QvdZov

let itens = []; 
function addItem(){ 
    $('.slides').empty(); 
    $('.slider > .indicators').detach(); 

    itens.push(createItem()); 

    for(i in itens){ 
    $('.slides').append(itens[i]); 
    } 

    $('.slider').slider(); 

    showItem(i); 
} 

function showItem(i){ 
    $('.slider > .indicators > .indicator-item')[i].click(); 
} 
関連する問題