Показать сообщение отдельно
  #1 (permalink)  
Старый 12.11.2014, 13:31
Новичок на форуме
Отправить личное сообщение для Айратиус Посмотреть профиль Найти все сообщения от Айратиус
 
Регистрация: 12.11.2014
Сообщений: 2

Доработать простой код на JS
Всем доброго дня. Данный скрипт изменяет пункт меню по якорю. якорь в HTML задан следующим образом.
<li><a href="#foo">Foo</a></li>
но если ссылка типа такого, то уже не работает скрипт
<li><a href="index.php#foo">Foo</a></li>
Пожалуйста допишите JS код. В нем вообще не соображаю.
Вместо index.php может быть абсолютно любая страница, но при этом скрипт должен работать корректно.
Вот источник http://jsfiddle.net/mekwall/up4nu/А вот мой код полностью
Код:
!doctype html><head>

 <script type="text/javascript" src="http://code.jquery.com/jquery-2.1.0.js"></script>

</head>

 

<style>

body {

    height: 6000px;

    font-family: Helvetica, Arial;

}

 

#top-menu {

    position: fixed;

    z-index: 1;

    background: white;

    left: 0;

    right: 0;

    top: 0;

}

 

#top-menu li {

    float: left;

}

 

#top-menu a {

    display: block;

    padding: 5px 25px 7px 25px;

    width: 4em;

    text-align: center;

    -webkit-transition: .5s all ease-out;

    -moz-transition: .5s all ease-out;

    transition: .5s all ease-out;

    border-top: 3px solid white;

    color: #aaa;

    text-decoration: none;

}

 

#top-menu a:hover {

    color: #000;

}

 

#top-menu li.active a {

    border-top: 3px solid #333;

    color: #333;

}

 

#foo {

    position: absolute;

    top: 400px;

}

 

#bar {

    position: absolute;

    top: 800px;

}

 

#baz {

    position: absolute;

    top: 1200px;

}

</style>

 

 

 

 

 

 

<script type="text/javascript">

 

 

 

jQuery(document).ready(function($) {

 

                        // Cache selectors

        var lastId,

                topMenu = $("#top-menu"),

                topMenuHeight = topMenu.outerHeight()+15,

                // All list items

                menuItems = topMenu.find("a"),

                // Anchors corresponding to menu items

                scrollItems = menuItems.map(function(){

                  var item = $($(this).attr("href"));

                  if (item.length) { return item; }

                });

        

        // Bind click handler to menu items

        // so we can get a fancy scroll animation

        menuItems.click(function(e){

          var href = $(this).attr("href"),

                  offsetTop = href === "#" ? 0 : $(href).offset().top-topMenuHeight+1;

          $('html, body').stop().animate({ 

                  scrollTop: offsetTop

          }, 400);

          e.preventDefault();

        });

        

        // Bind to scroll

        $(window).scroll(function(){

           // Get container scroll position

           var fromTop = $(this).scrollTop()+topMenuHeight;

           

           // Get id of current scroll item

           var cur = scrollItems.map(function(){

                 if ($(this).offset().top < fromTop)

                   return this;

           });

           // Get the id of the current element

           cur = cur[cur.length-1];

           var id = cur && cur.length ? cur[0].id : "";

           

           if (lastId !== id) {

                   lastId = id;

                   // Set/remove active class

                   menuItems

                         .parent().removeClass("active")

                         .end().filter("[href=#"+id+"]").parent().addClass("active");

           }                   

        });

                

 

                });

 

 

</script>

 

<body>

    <ul id="top-menu">

      <li class="active">

        <a href="#">Top</a>

      </li>

      <li><a href="#foo">Foo</a></li>

      <li>

        <a href="#bar">Bar</a>

      </li>

      <li>

        <a href="#baz">Baz</a>

      </li>

    </ul>

    

    <a id="foo">Foo</a>

    

    

    <a id="bar">Bar</a>

    

    

    <a id="baz">Baz</a>

</body>
Ответить с цитированием