2015-07-14 9 views
1

У меня возникла странная проблема, когда мне нужно дважды щелкнуть ссылку (кнопку), чтобы активировать событие лайтбокса, и не могу понять, почему для меня жизнь ,Лайтбокс активируется при одновременном нажатии ссылки дважды

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

(ссылка удалено поэтому Google не индексирует)

<script type="text/javascript"> 
    var $j = jQuery.noConflict(); 
    var src = ''; 

    $j(function() 
    { 
     $j("span#btnclick").click(function(event) 
     { 
      event.preventDefault(); 

      $j("a.watchbutton").nivoLightbox({ 
       effect: 'fade', 
       afterShowLightbox: function() 
       { 
        src = $j('.nivo-lightbox-content > iframe').attr('src'); 
        $j('.nivo-lightbox-content > iframe').attr('src', src +'?autoplay=1'); 
       } 
      }); 
     }); 
    }); 
    </script> 
+2

Попытка извлечения '$ J ("a.watchbutton") nivoLightbox ({......' 'из click_ event. – lmgonzalves

+0

странно, что сработало. –

+1

Это потому, что прослушиватель кликов для a.watchbutton определен, когда вы нажимаете на span # btnclick – RobertoNovelo

ответ

1

Это потому, что вы определяете функциональность лайтбокса внутри click события. Поэтому, когда вы нажимаете первый раз, определяется функциональность лайтбокса. Второй раз он переделан, но прежде чем он работает, потому что он уже определен.

Решение состоит в том, чтобы извлечь определение функциональности лайтбокс из click события:.

$j("span#btnclick").click(function(event){ 
    event.preventDefault(); 
}); 

$j("a.watchbutton").nivoLightbox({ 
    effect: 'fade', 
    afterShowLightbox: function() 
    { 
     src = $j('.nivo-lightbox-content > iframe').attr('src'); 
     $j('.nivo-lightbox-content > iframe').attr('src', src +'?autoplay=1'); 
    } 
}); 
+0

спасибо :) имеет смысл сейчас –

Смежные вопросы