appendTo()& prependTo()在IE8中不起作用

时间:2014-10-09 01:33:53

标签: javascript jquery html internet-explorer slider

我正在使用基本滑块(RoyalSlider)运行一些测试,我可以使用滑块事件功能在加载时添加/附加一些滑块内容。

我只是IE8的问题,这些功能根本不起作用!我已经阅读了IE8和appendTo()/ prependTo()的一些问题,但是,这些问题与我的相似。

的jQuery

(function($) {

    $(document).ready(function() {

        var homeSlider = $('#js-slider');
        if (homeSlider.length) {

            var slider = homeSlider.royalSlider({
                imageScaleMode: 'fill',
                controlNavigation: 'tabs',
                thumbs: {
                    fitInViewport: false,
                    autoCenter: false
                },
                arrowsNavAutoHide: false,
                slidesSpacing: 0,
                loop: true,
                transitionSpeed: 250,
                navigateByClick: true,
                sliderTouch: true,
                keyboardNavEnabled: true,
                addActiveClass: true,
                autoPlay: {
                    enabled: true,
                    pauseOnHover: false,
                    delay: 6000
                },
                block: {
                    moveOffset: 200,
                    speed: 600,
                    moveEffect: 'bottom',
                    delay: 600
                }
            }).data("royalSlider");

            slider.ev.on('rsAfterContentSet', function(e, slideObject) {
                homeSlider.find('.rsNav').prependTo( $('#js-slider') );
            });

            slider.ev.on('rsAfterContentSet', function(e, slideObject) {
                homeSlider.find('.rsABlock').appendTo( $('#js-homeSliderElements') );
            });
        }
    });
})( jQuery );

HTML

<div class="container container--home">
    <div class="container slider-slideTitleWrapper" id="js-homeSliderElements"></div>
    <div class="royalSlider slider slider--home rsMinW" id="js-slider">
...
    </div>
</div>

2 个答案:

答案 0 :(得分:0)

尝试使用原生JS方法

slider.ev.on('rsAfterContentSet', function(e, slideObject) {
     var parent = homeSlider.find('.rsNav');
     parent.insertBefore($('#js-slider'), parent.firstChild);
});

slider.ev.on('rsAfterContentSet', function(e, slideObject) {
     homeSlider.find('.rsABlock').appendChild($('#js-homeSliderElements'));
});

答案 1 :(得分:0)

略微改变了一些事情并找到了一种工作方法:

        var ready = false;

        var readyHandler = function() {
            homeSlider.find('.rsABlock').appendTo( $('#js-homeSliderElements') );
        };

        slider.ev.on('rsAfterSlideChange', readyHandler);

        slider.ev.on('rsAfterContentSet', function(e, slideObject) {
            if (!ready) {
                readyHandler();
                ready = true;
            }
        });