ползунок, строка выполняется до setTimeout и после наведения курсора мыши для выполнения сценария один раз, пока все слайды не будут завершены

Привет у меня есть этот html

<div class="slideListHolder clearfix">
                        <div class="cntBoxes">
                            <div class="mainBox" id="list-1">
                                <img src="img/m1.jpg"width="200" height="400" alt="" />
                                <a class="link" target="_blank" href="http://test.euwebstudio.jp/ntt/careerup/premium/index2.html">詳細はこちら</a>

                            </div>
                            <div class="box id-1">
                                <img src="img/img1.jpg"width="200" height="400" alt=""/>
                            </div>
                            <div class="box id-2">
                                <img src="img/img6.jpg"width="200" height="400" alt=""/>
                            </div>
                            <div class="box id-3">
                                <img src="img/img11.jpg"width="200" height="400" alt=""/>

                            </div>
                            <div class="box id-4">
                                <img src="img/img16.jpg"width="200" height="400" alt=""/>
                            </div>
                            <div class="box id-5">
                                <img src="img/img21.jpg"width="200" height="400" alt=""/>
                            </div>
                        </div>
                        <div class="cntBoxes">

                            <div class="mainBox" id="list-2">
                                <img src="img/m2.jpg"width="200" height="400" alt=""/>
                            </div>
                            <div class="box id-1">
                                <img src="img/img2.jpg"width="200" height="400" alt=""/>
                            </div>
                            <div class="box id-2">
                                <img src="img/img7.jpg"width="200" height="400" alt=""/>
                            </div>

                            <div class="box id-3">
                                <img src="img/img12.jpg"width="200" height="400" alt=""/>
                            </div>
                            <div class="box id-4">
                                <img src="img/img17.jpg"width="200" height="400" alt=""/>
                            </div>
                            <div class="box id-5">
                                <img src="img/img22.jpg"width="200" height="400" alt=""/>
                            </div>

                        </div>
                    </div>

И это js

var cntBoxes='.slideListHolder .cntBoxes';
var time = 300;

$(cntBoxes).mouseover(function() {
    if(!$(this).parent('div').hasClass('dc') && !$(this).parent('div').hasClass('over')){
    $(cntBoxes).parent('div').addClass('over');

        var elem = $(this);
        pieces=elem.children('.mainBox').attr('id').split('list-');

        if (typeof pieces[1] !== "undefined") {
                $(cntBoxes).children('.mainBox').each(function(){
                    var $this=$(this)
                    setTimeout( function(){
                        $this.fadeOut('fast',function(){
                            var showId='.id-'+pieces[1];
                            $this.parent('div').children(showId).fadeIn('fast');
                        });
                    },time)
                    time += 300;
                });
                $(cntBoxes).parent('div').addClass('dc');
                $(cntBoxes).parent('div').removeClass('over');
        }

    }




})

$(cntBoxes).click(function() {
    if($(this).parent('div').hasClass('dc')){

        $(cntBoxes).children('.box:visible').each(function(){
            $(this).fadeOut('slow',function(){
                $(this).parent('div').children('.mainBox').fadeIn('slow');
            });

        });
        $(cntBoxes).parent('div').removeClass('dc');
    }
});

как это сделать, эта строка $(cntBoxes).parent('div').removeClass('over');, после setTimeout( function(){, и как можно провести мышью, пока все слайды не будут закончены, этот скрипт выполняется несколько раз. Большое спасибо, извините, если объяснение не так ясно


person mIRU    schedule 02.11.2011    source источник
comment
Миру, тебе никто не поможет((   -  person Vladimir Stazhilov    schedule 04.11.2011


Ответы (1)


Вы бы уже решили этот вопрос. для меня не имеет значения, может кто-то другой это увидит и воспользуется. Во-первых, в java-скрипте функции таймера асинхронны, как функции ajax. Они запускаются на разных ступенях. Это означает, что ваш код будет продолжаться сразу после вашей функции setTimeout, не дожидаясь ее завершения/возврата.

Есть несколько способов сделать это с помощью очередей, TimeoutChain...

вы должны посмотреть здесь Я знаю, что это не очень хорошо ответ, но я думаю, что это могло бы дать хорошие подсказки о проблеме.

person Enes    schedule 15.03.2012