JavaScript отключить второй клик - PullRequest
1 голос
/ 22 декабря 2011

У меня есть JavaScript:

<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js" type="text/javascript"></script>
<script type="text/javascript">

    var Delay = 10;//Seconds after them clicking the link, the gateway vanishes. 
    function setupgateway()
    {

        var Left = $(window).width() /2;
                Left = Left - $('#gatewaydiv').width()/2;

        var Top = $(window).height() /2;
        Top = Top - $('#gatewaydiv').height()/2;

        $('#gatewaydiv').css('top', Top+'px').css('left', Left+'px').css('display', 'inline');
        $('#gatewayDimmer').width($('html').width());
        $('#gatewayDimmer').height($('html').height());
        $('#gatewayDimmer').css({display:'block', position:'fixed'});
    }

    function removegateway()
    {
        $('#gatewaydiv').css('display', 'none');
        $('#gatewayDimmer').css('display','none');
    }

    $(document).ready(function()
    {
                $('.my-link').click(function(e){
                e.preventDefault();

        $('.offerlink').click(function()
        {
            setTimeout('removegateway()', Delay*10);
        });

        setupgateway();
                });
    });
</script

... если хотите, всплывающее окно, которое вызывается / вызывается нажатием на изображение (я) и исчезает через x секунд ссылкиво всплывающем окне нажимается.Мне нужно, чтобы изображения (вызывающие абоненты / триггеры) шли туда, где они (они) связаны, когда они снова нажали, а не вызывали javascript.Что мне нужно сделать, чтобы отключить JavaScript после первого клика?

Ответы [ 2 ]

3 голосов
/ 22 декабря 2011

Использование .one() вместо .click():

$('.my-link').one('click', function(e){
    e.preventDefault();

    $('.offerlink').click(function()
    {
        setTimeout(removegateway, Delay*10);
    });

    setupgateway();
});

.one() похоже на .click(), но выполняется только один раз и затем не связано.

0 голосов
/ 22 декабря 2011

Поместите код для привязки клика в функцию, чтобы вы могли использовать ее повторно.Отсоедините щелчок, когда вы показываете шлюз, и повторно привязайте его, когда вы удалите шлюз.

Примечание. Единица времени для setTimeout составляет миллисекунды, поэтому Delay*10 даст вам 0,1 секунды, а не 10 секунд.

function bindLink() {
  $('.my-link').click(function(e){
    e.preventDefault();

    $('.offerlink').click(function() {
      window.setTimeout(function() {
        removegateway();
        bindLink();
      }, Delay * 1000);
    });

    setupgateway();
    $('.my-link').unbind('click');
  });
}


$(document).ready(function() {
  bindLink();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...