Приветствую всех, подскажите где может быть ошибка, не меняется класс на актив при нажатии кнопок, получается выделена всегда кнопка "обзор". В чем может быть ошибка
<div id="menu">
<ul id="menuHead">
<li>
<a href="/news" target="_top" class="newmessage">Новости</a>
</li>
<li class="active">
<a href="/profile" target="_top">Обзор</a>
</li>
<?
$usid=$ _SESSION[ "user_id"];
$db->Query("SELECT * FROM ".$pref."_pm WHERE user_id_in = '$usid' AND status = 0 AND inbox = 1");
$sk = $db->NumRows();
if ($sk > 0) {
$pmm = '<font color="red">('.$sk.')</font>';
} else {
$pmm = '<font color="red">(0)</font>';
}
?>
<li>
<a href="/msg" target="_top" id="msgmenu">Сообщения <?=$pmm; ?></a>
</li>
<li>
<a href="/hideout" target="_top">Пещера</a>
</li>
<li>
<a href="/city" target="_top">Город</a>
</li>
<li>
<a href="/robbery" target="_top">Охота</a>
</li>
<li>
<a href="/stats" target="_top">ТОП-лист</a>
</li>
<li class="free-space ">
<a href="/contats" target="_blank">Поддержка</a>
</li>
<li>
<a href="/logout" target="_top">Выйти из игры</a>
</li>
<li id="doc_time">
<script type="text/javascript">
clock();
</script>
</li>
<script type="text/javascript">
var currentPage = $('#menuHead .active').text();
$('#header h1').text(currentPage);
$(document).ready(function() {
$('#menuHead li').live('click', function() {
$('#menuHead .active').removeClass('active');
$(this).addClass('active');
});
});
</script>
</ul>
</div>
Попробуй так:
<script type="text/javascript">
var currentPage = $('#menuHead .active').text();
$('#header h1').text(currentPage);
$(document).ready(function() {
$('#menuHead').on('click', 'li', function(e) {
e.preventDefault();
$('#menuHead .active').removeClass('active');
$(this).addClass('active');
});
});
</script>
var currentPage = $('#menuHead .active').text();
$('#header h1').text(currentPage);
$(document).ready(function() {
$('#menuHead a').on('click', function(e) {
e.preventDefault();
var $this = $(this),
item = $(this).closest('li');
if(!item.hasClass('active')){
item.addClass('active')
.siblings()
.removeClass('active');
}else {
item.removeClass('active');
}
});
});
/* для наглядности */
.active {
background: #ccc;
}
<script src="https://code.jquery.com/jquery-2.0.3.js"></script>
<div id="menu">
<ul id="menuHead">
<li>
<a href="/news" target="_top" class="newmessage">Новости</a>
</li>
<li class="active">
<a href="/profile" target="_top">Обзор</a>
</li>
<li>
<a href="/msg" target="_top" id="msgmenu">Сообщения <?=$pmm; ?></a>
</li>
<li>
<a href="/hideout" target="_top">Пещера</a>
</li>
<li>
<a href="/city" target="_top">Город</a>
</li>
<li>
<a href="/robbery" target="_top">Охота</a>
</li>
<li>
<a href="/stats" target="_top">ТОП-лист</a>
</li>
<li class="free-space ">
<a href="/contats" target="_blank">Поддержка</a>
</li>
<li>
<a href="/logout" target="_top">Выйти из игры</a>
</li>
<li id="doc_time">
</li>
</ul>
</div>
Переход на страницу не стопорится потеряли return false
и переход получается с обновлением всей страницы, а js так не умеет сохраняться, он может сохраняться до перезагрузки страницы, чтобы и это избежать, придется сделать на сервере, а для этого нужно сделать условие на каждую li
.
<?php
$url = isset($_GET['page'])?$_GET['page']:'';
?>
<li class="<?='/news'===$url?'active':''?>">
Ну думаю как заметили - это как минимум в ручную проставлять, так делать не есть гуд, но это ваше решение.
Советую смотреть в эту сторону:
<?php
$pages = array(
'news' => array('Новости'),
'profile' => array('Профиль'),
'disableLink' => array('Выключенная кнопка', false)
);
function menu(array $array) {
$menu = '';
if ($array) {
$url = filter_input(INPUT_GET, 'page');
foreach ($array as $key => $value) {
$class = isset($value[1]) && is_bool($value[1]) && !$value[1] ? 'disable' : '';
if (!$class) {
if ($url === $key) {
$class = 'active';
$key = '#';
}
}
$class = $class ? ' class="' . $class . '"' : '';
$menu .= '<li' . $class . '>
<a href="' . $key . '">
' . $value[0] . '
</a>
</li>';
}
}
return $menu;
}
?>
<ul>
<?= menu($pages) ?>
</ul>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Вот понадобился RegEx для захвата всего содержимого между (но не включая сами "{" и "}") первой "{" и последней "}", то есть в тексте могут ещё встречаться...
Кнопка "поделиться", на моем сайте, работает неправильноОна грузит название на языке, который я не указывал в мета-теге