开发者

Dynamically added elements don't load in my jQuery slider

开发者 https://www.devze.com 2023-03-23 22:05 出处:网络
My page currently uses Slides I want to be able to add new \"slides\" to my slider dynamically.The way I do this is through an XML document, which contains a link to the \"slide image\" and the href.

My page currently uses Slides

I want to be able to add new "slides" to my slider dynamically. The way I do this is through an XML document, which contains a link to the "slide image" and the href.

My jQuery code to dynamically add elements is this:

jQuery.ajax({
    type: "GET",
    url: "xml/slider_non_flash_images.xml",
    dataType: "xml",
    success: function(xml) {
        jQuery(xml).find('image').each(function() {
            var image开发者_如何学Gosrc = 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);
        });
    }
});

This all works, and adds the divs to the slides containing div. The problem is, the slide doesn't work.

If I hard code the <div> elements within the container myself, they load just fine.

Could this be a "timing" issue? Where the elements are loaded after the slider attemps to run? And if so, how can I add them prior to. This all happens in the (document).ready method. Is there something sooner?

Thanks.

I'm sure someone will ask, so here's the code to start the slider.

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


Most sliders scan the DOM for currently existing elements only onload. If the DOM is changed (i.e. dynamically with ajax), you may have to re-initialize the slider. How to do this will be different for each slider plugin.

You could try putting the $('#sliders').slides(...) call into a function, calling that function on pageload, then re-calling that function whenever the DOM is changed by ajax.


check out http://api.jquery.com/live for more details on the live function

0

精彩评论

暂无评论...
验证码 换一张
取 消