JS выбор блока контента внешней ссылкой

405
24 ноября 2016, 10:00

На главной странице (stom-mva ru) одни пункты меню(ссылки) ведут на другие страницы, другие пункты - меняют на div'ы (основной "контент") с помощью этого кода:

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(function() {
    $('.m').on('click', function(e) {
        e.preventDefault();
        $('.content').each(function() {
            $(this).css('display', 'none');
        });
        var block = $(this).attr('href');
        $(block).css('display', 'block');
    });
});
</script> 

и

<li ><a href="#about" class="m" id="abo"> </a></li> 
    <li ><a href="uslugi.html"  id="usl"></a></li>
    <li ><a href="gallery.html"  id="gall" ></a></li>
    <li ><a href="#contacts" class="m" id="cont" ></a></li>

...

<div class="content" id="about">

...

Вопрос: как сделать так, что бы ЭТО меню корректно работало и с других страниц сайта? Т.е. чтоб и на других страницах ссылки, которые ведут на "дополнительные" div'ы на главной, срабатывали правильно, и показывали автоматом нужные блоки?

Как я думаю, что тут может быть 2 пути: 1. правильно указать в ссылках меню эти "динамические" блоки. (но как? знаю, только, что такое используется в CMS, но там же php!, и будут ли они тогда ЧПУ?) 2. в скрипт допилить функцию "срабатывания" и при переходе с "внешних" ссылок. Но как?

Answer 1

Пощелкал и выяснил, что у вас просто есть простое "несовпадение" при работе скрипта. Как это получается - вы когда перемещаетесь с "услуги" на "страхование", то ссылка имеет вид index.html#insurance. Ссылка то вполне рабочая, однако скрипт, который его обрабатывает срабатывает ПОСЛЕ прогрузки страницы.

И даже больше - скрипт обрабатывает НАЖАТИЕ (click) на элемент, а ведь при переходе на страницу вы на элемент не нажимаете уже - вы страницу загружаете. А вот при её загрузке обработки нет (ведь когда ты открываешь страхование вы переходите обратно на страницу index.html).

Решение достаточно простое - нужно поставить обработку на загрузку страницы, которая будет обрабатывать url. Если в урл есть айдишник ( #isurance), то должен срабатывать скрипт, который вы написали в вопросе. Пример события, который запускает твой код после загрузки DOM - $(document).ready(function()

READ ALSO
Добавление panel в panel-group bootstrap

Добавление panel в panel-group bootstrap

Пытаюсь создать новую категорию. Отправляю ее на сервер для сохранения в базе, и если success,то хочу добавить ее ко всем остальным в panel-group.

362
unexpected token &amp; при вызове метода html()

unexpected token & при вызове метода html()

Есть блок script на html странице. .

385
Покадровая смена изображений

Покадровая смена изображений

Как сделать подобную анимацию.

435
Не работает отправка формы

Не работает отправка формы

Здравствуйте, почему-то не работает отправка формы на почты, помогите разобраться в чем дело.

345