2015-06-26 3 views
0

Фон: попытка создания полноэкранного меню для мобильных устройств на сайте одной страницы.Кнопка должна быть нажата дважды (JQuery)

Задача: Для разблокировки #handle необходимо нажать 2 раза. Я пытался использовать следующий по-разному, но я, кажется, осуществить это не так, в некотором роде: жить/умереть, BIND/UNBIND, вкл/выкл, делегат/undelegate.

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

HTML

 <div id="overlay"> 
      <input type="checkbox" id="op"></input> 

       <div class="overlay overlay-hugeinc"> 
        <label for="op"></label> 
         <div id="nav"> 
          <ul> 
           <li class="homescroll" class="overlayli">Home</li> 
           <li class="servscroll" class="overlayli">Services</li> 
           <li class="workscroll" class="overlayli">Work</li> 
           <li class="aboutscroll" class="overlayli">About</li> 
           <li class="contactscroll" class="overlayli">Contact</li> 
          </ul> 
         </div> 
       </div> 
     </div> 

Jquery Когда Ли щелкнул пользователь получает прокручивать страницу вниз и меню скрыто: Если теперь пользователь хочет, чтобы открыть меню снова это должно быть нажмите 2 раза для действия.

<script> 
    $(document).ready(function() { 
     $('li').hover(    
       function() { 
       $('li', this).fadeIn(); 
       }, 
       function() {     
       $('li', this).fadeOut(); 
       } 
      ); 
     $(".aboutcroll").off().on('click', function() { 

      $('html, body').animate({ 
       scrollTop: $("#aboutdummy").offset().top 
      }, 800);     
      $("#overlay").hide(); 
      $("#handle").on('click'); 
     }); 
    }); 
</script> 

При #handle щелчке наложения полноэкранным откроется меню:

<script> 
    $(document).ready(function(){ 

     $("#handle").off().on('click', function() { 
       $("#overlay").show(); 
     }); 
    }); 
</script> 
+0

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

+0

У вас есть несколько атрибутов класса на каждом 'li'. Это означает, что браузер запоминает либо первый, либо второй, но не оба имени класса. Используйте один класс с двумя именами, разделенными пробелами, например. 'class =" homescroll overlayli "'. Не уверен, что это имеет какое-то отношение к этой конкретной проблеме. –

+0

Просто изменил это. Не решает проблему. Thx, хотя! – olle

ответ

0

Проблема, кажется, с #handle функции OnClick В своем коде вы используете

$("#handle").off().on('click', function() { 
     $("#overlay").show(); 
}); 

Здесь .off() удаляет прослушиватель событий на f Первый клик! Попробуйте удалить .off()

Кроме того, для прокрутки, вы можете использовать следующий код (который также без .off())

$("SELECTOR").click(function() { 
    $('html, body').animate({ 
     scrollTop: $("#contact").offset().top 
    }, 500); 
    return false; 
}); 

Надеются, что это работает для Вас! И если это не так, было бы лучше, если бы вы могли поделиться своим кодом через jsFiddle или CodePen.

+0

Это, к сожалению, тоже не решает мою проблему. Для чего возвращается ложь? – olle

+0

Можете ли вы дать jsFiddle вашего кода, чтобы мы могли лучше понять вашу проблему? И «return false» означает прекратить распространение события на его дочерние элементы. Он похож на event.returnValue = false (IE); или event.stopPropagation() или установка event.cancelBubble = true (IE) –

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