2011-07-29 11 views
2

マイページには、現在、私は動的に私のスライダーに新しい「スライド」を追加できるようにしたいSlides動的に追加された要素は、私のjQueryのスライダーにロードされません

を使用しています。私がこれを行う方法は、 "スライドイメージ"とhrefへのリンクを含むXMLドキュメントを通してです。

jQuery.ajax({ 
    type: "GET", 
    url: "xml/slider_non_flash_images.xml", 
    dataType: "xml", 
    success: function(xml) { 
     jQuery(xml).find('image').each(function() { 
      var imagesrc = jQuery(this).find('src').text(); 
      var url = jQuery(this).find('href').text(); 
      var item = '<div><a href="' + url + '"><img src="' + imagesrc + '"/></a></div>'; 
      jQuery('.slides_container').append(item); 
     }); 
    } 
}); 

このすべての作品、およびDIVを含むスライドにdivを追加します:動的に要素を追加する

私のjQueryのコードはこれです。問題は、スライドが機能しないことです。

コンテナ内にある<div>要素をハードコードすると、うまくロードされます。

「タイミング」の問題ではありますか?スライダが実行を試みた後に要素がロードされる場所もしそうなら、どうすればそれらを前に追加することができますか?これはすべて(document).readyメソッドで発生します。もっと早いものがありますか?

ありがとうございました。

誰かが聞いてくれると確信していますので、ここでスライダを開始するコードです。

jQuery('#slides').slides({ 
    preload: true, 
    preloadImage: 'images/loader.gif', 
    play: 8000, 
    effect: 'fade', 
    pause: 15250000, 
    slideSpeed: 8000, 
    crossfade: true, 
    fadeEasing: "easeOutQuad", 
    hoverPause: true 
}); 
+1

あなたはそれがページが '最初の時、それは存在しない要素は表示されません' .live() '関数を使用してDOMをリロードが必要な場合があり、ライブ機能の詳細については、準備が整った() 'あなたが指示する必要があるので、それらを探すことです。 – webLacky3rdClass

+0

これを修正するために必要なのは、 '.ajax'コールで' async:false'オプションを設定することです。 –

答えて

3

ほとんどのスライダは、現在の既存の要素のみを読み込みます。 DOMが変更された場合(つまり、動的にajaxを使用する場合)、スライダを再初期化する必要があります。これを行う方法はスライダプラグインごとに異なります。

$( '#slider')。slides(...)を関数に呼び出し、pageloadでその関数を呼び出してから、DOMがajaxによって変更されたときにその関数を再呼び出しすることができます。

+0

jQuery.ajaxメソッドで 'function'を呼び出すでしょうか? –

+0

あなたの人を愛して、私はそれをして、ブームは魅力のように動作します –

+0

はい、あなたの "$(function(){...});"内で一度ロードされ、その後、あなたのjQuery.ajax "success"折り返し電話。 – neokio

関連する問題