Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Быстрый клик мышкой на объекте (https://javascript.ru/forum/events/27765-bystryjj-klik-myshkojj-na-obekte.html)

Mekonosan 24.04.2012 03:15

Быстрый клик мышкой на объекте
 
У меня есть сайт, http://audioart.com.ua/, написанный на Ajax с примесью PHP. Если на главной странице нажать "Стереосистемы", то мы попадаем в меню стереосистем. В правой части сайта расположены группы устройств по три в ряд. Есть две кнопки прокрутки: сверху и снизу. Нажимаем на кнопки, ряды поднимаются или опускаются по ряду до тех пор, пока блок не достигнет конца.

Реализовано это на каждой кнопке так:
На верхней:

Код:

<?php if($cbr>6) echo "<a href='#' title='Вверх' ><img src='pics/at.png'  onclick='scrolld(&quot;conme&quot;,&quot;189&quot;)' ondblclick='scrolld(&quot;conme&quot;,&quot;189&quot;)'/></a>";?>
На нижней:

Код:

<?php if($cbr>6) echo "<a href='#'  title='Вниз'><img src='pics/ab.png' onclick='scrollu(&quot;conme&quot;,&quot;537&quot;,&quot;189&quot;)' title='Вниз' ondblclick='scrollu(&quot;conme&quot;,&quot;537&quot;,&quot;189&quot;)'  /></a>";
      ?>

Между кнопками стоят два блока один в одном:
Код:


    <div id="scrollmeme2" align='center' >
        <div id='conme' align='center' ></div>
    </div>

Блок scrollmeme2 служит окном, в котором крутится блок conme

Функция прокрутки:

Код:

function scrollu(id,h,i) {
i=i*1;       
 var name="#"+encodeURIComponent(id);
 var t1=149;
 var sum=t1-h+i;
 if($(name).position().top>=sum)
 {
  $(name).animate({top:"-="+i},"slow");
 }
}

function scrolld(id,i) {
i=i*1;
 var name="#"+encodeURIComponent(id);
if($(name).position().top<149)
 {
  $(name).animate({top:"+="+i},"slow");
 }
}

Где id имя блока, в данном случае conme, h - координата top нижней части блока scrollmeme2, i - высота ряда.

Всё работает отлично, если кликать нормально. Но если кликать на стрелках очень быстро, то условия-ограничения не срабатывают и группы устройств уходят за пределы ограничивающего блока.

Возможно, кто-то сталкивался с такой проблемой?


Часовой пояс GMT +3, время: 21:30.