jQuery несколько событий, происходящих одновременно - PullRequest
1 голос
/ 16 января 2012

У меня проблема с накоплением событий.У меня есть матрица больших значков, и когда я наведите курсор мыши на одну из них, текстовое поле скользит вниз.И все отлично для первой попытки, но если я снова наведу курсор мыши и наведу курсор мыши на один и тот же объект - происходит столкновение событий, поле сдвигается вниз или никогда не появляется, стрелка-указатель исчезает и т. Д. Я попытался поставитьоповещение, и чем больше я наводю курсор мыши на один и тот же объект, тем больше получаю оповещений (3 указателя мыши = 3 оповещения).

Вот мой html:

<div class="app">
    <a href="#appinfo-1"><img src="images/app001.png" alt="" /></a>
    <div class="apparrow"></div>
    <div id="appinfo-1" class="appbody">                            
        <div><img src="images/apptop.png" alt="" /></div>
        <div class="appwrapper">
            <div class="leftappborder"></div>
            <div class="appcontent">
                <h1>Web Based Administration (CMS)</h1>
                <p class="apptext">Lorem ipsum dolor sit amet. </p>
                <p class="incltick">Included</p>
            </div>                                  
            <div class="rightappborder"><!-- --></div>
        </div>                      
        <div><img src="images/appbottom.png" alt="" /></div>
    </div>
</div>

Вот мой jQuery:

$(function(){
$(".app > a").mouseover(function() {

//some code deleted here

    var currentactive = $(this).attr("href");       
        // activate|deactivate infoblock
        $(currentactive).parent(".app").hover(
            function() {
                $(currentactive).queue(function() {
                    $(this).siblings(".apparrow").slideToggle(150);
                    $(this).css({"visibility":"visible"}).slideToggle(800, incltick);
                    $(this).dequeue();
                });                 
            },                  
            function() {
                $(currentactive).queue(function() {
                    $(this).css({"visibility":"hidden"}).slideToggle(800, incltick);                        
                    $(this).siblings(".apparrow").slideToggle(150); 
                    $(this).parent(".app").animate({marginBottom:0 +"px"}, 800, defaultState);  
                    $(this).dequeue();
                });
            }
        );
    }       
});

});

1 Ответ

0 голосов
/ 16 января 2012

Внутри вашего mouseover вы звоните $(currentactive).parent(".app").hover(....

Это означает, что каждый раз, когда вы наводите курсор мыши, вы добавляете дополнительную hover. Таким образом, если вы наведите курсор мыши более 3 раз, вы получите 3 hover с, и событие сработает 3 раза. Вы не должны прикреплять события внутри других событий, которые будут запущены снова. Если вам действительно нужно, установите флаг и убедитесь, что он прикрепляется только один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...