Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.09.2014, 21:16
Аспирант
Отправить личное сообщение для SLameN Посмотреть профиль Найти все сообщения от SLameN
 
Регистрация: 13.08.2012
Сообщений: 70

Активное li a внутри li a
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(function () { 
    $('#menu a').each(function () {
        var location = window.location.href;
        var link = this.href; 
        if(location == link) {
            $(this).addClass('active');
        }
    });
});
</script>

<ul id="menu">
            <li><a href="#">Тест</a></li>
<li><a href="#">Тест 2</a>
<ul>
<li><a href="#">Тест 3</a></li>
<li><a href="#">Тест 4</a></li>
</ul></li>
</ul>


Как сделать, чтобы подсвечивался главный <li> внутри которого еще один ul. На данный момент подсвечивает только внутри второго ul
Ответить с цитированием
  #2 (permalink)  
Старый 16.09.2014, 23:04
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

можно так
<!DOCTYPE HTML>
<html>
  
  <head>
    <style>
      .active {
        color: red;
      }
    </style>
  </head>
  
  <body>
    <ul id="menu">
      <li><a href="#">Тест</a></li>
      <li><a href="#">Тест 2</a>
        <ul>
          <li><a href="#">Тест 3</a></li>
          <li><a href="xxx">Тест 4</a></li>
        </ul>
      </li>
    </ul>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script>
      $(function () {
        $('#menu a').each(function () {
          var location = 'xxx'; //window.location.href;
          var link = this.href;
          if (link.indexOf(location) !== -1) {
            $(this).addClass('active');
          }
        });
        $('#menu li').has('a.active').find('> a').addClass('active');

      });
    </script>
  </body>

</html>
Ответить с цитированием
  #3 (permalink)  
Старый 16.09.2014, 23:32
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

это наводящие примеры
<style>
  a[href=test2] {
    color: red
  }
}
.active {
  color: green;
  font-weight: bold;
}
</style>
<body>
  <ul id="menu">
    <li>
      <a href="test1">Тест1</a>
    </li>
    <li>
      <a href="test2">Тест2</a>
    </li>
    <li>
      <a href="test3">Тест3</a>
    </li>
  </ul>
  <script>
    var link = document.querySelector("#menu a[href='test1']");
    //document.querySelector("#menu a[href='" + window.location.href + "']")
    if (link) link.style.color = 'green';
  </script>
</body>
Ответить с цитированием
  #4 (permalink)  
Старый 18.09.2014, 10:51
Аспирант
Отправить личное сообщение для SLameN Посмотреть профиль Найти все сообщения от SLameN
 
Регистрация: 13.08.2012
Сообщений: 70

Pavel M., к сожалению не работает
Poznakomlus, а что такое [href=test2] в css? Я не сильно силен в JS натолкните хоть на правильный путь...

Заранее спасибо
Ответить с цитированием
  #5 (permalink)  
Старый 18.09.2014, 13:50
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от SLameN
Как сделать, чтобы подсвечивался главный <li> внутри которого еще один ul. На данный момент подсвечивает только внутри второго ul
Как вариант, использовать метод
parents('li')

и брать последнего родителя. Потом искать там дочернюю ссылку и уже ее отмечать...
Ответить с цитированием
  #6 (permalink)  
Старый 18.09.2014, 14:00
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от SLameN
Я не сильно силен в JS натолкните хоть на правильный путь
Что-то типа такого...

<!DOCTYPE html>
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
.active {
	background-color: red;
}
</style>
<script type='text/javascript'>
$(function () { 
    $('#menu a').each(function () {
		var location = 'test' //window.location.href;
		var link = this.href; 
		//if(location == link) {
		if(link.lastIndexOf(location)>-1) {
			var o=$(this).parents('li');
			o.eq(o.length-1).children('a').addClass('active');
		};
    });
});
</script>
</head>
<body>
<ul id="menu">
	<li>
		<a href="#">Тест</a>
	</li>
	<li>
		<a href="#">Тест 2</a>
		<ul>
		<li><a href="test">Тест 3</a></li>
		<li><a href="#">Тест 4</a></li>
		</ul>
	</li>
</ul>
</body>
</html>
</html>

Проверку я конечно сделал для теста... Потом сделай свою, какую нужно...
Ответить с цитированием
  #7 (permalink)  
Старый 18.09.2014, 14:37
Аспирант
Отправить личное сообщение для SLameN Посмотреть профиль Найти все сообщения от SLameN
 
Регистрация: 13.08.2012
Сообщений: 70

А если названия файлов разные, как быть?
Ответить с цитированием
  #8 (permalink)  
Старый 18.09.2014, 14:43
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от SLameN
А если названия файлов разные, как быть?
Я не понял...

Делай условия какие тебе нужно. Это я для демонстрации такие сделал.
Ответить с цитированием
  #9 (permalink)  
Старый 18.09.2014, 14:55
Аспирант
Отправить личное сообщение для SLameN Посмотреть профиль Найти все сообщения от SLameN
 
Регистрация: 13.08.2012
Сообщений: 70

<li><a href="#">Материалы</a>
                <ul>
                    <li><a href="a.php">Статьи</a></li>
                    <li><a href="b.php">Новости</a></li>
                    <li><a href="v.php">Полезные ссылки</a></li>
                    <li><a href="c.php">Вопросы инструктору</a></li>
                </ul>
            </li>


var location = 'test' - ведь у меня же разные страницы? я же через запятую их не напишу.

А если сделать так:
var location = window.location.href;

То работает как-то некорректно, выделяет половину <li>
Ответить с цитированием
  #10 (permalink)  
Старый 18.09.2014, 14:57
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от SLameN
var location = 'test' - ведь у меня же разные страницы?
Это сделано для примера...

Сообщение от SLameN
А если сделать так:
var location = window.location.href;

То работает как-то некорректно, выделяет половину <li>
Таки смотри, что тебе выдает... Смотри с чем сравнивает... Делай выводы.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ng-repeat внутри ng-repeat cartrege Angular.js 1 24.10.2013 14:25
Как получить доступ к функциям внутри $(document).ready ? oleg_barma jQuery 3 05.06.2012 20:56
Как получит ссылку на элемент внутри которого запустили JS код? aRpi Events/DOM/Window 20 02.10.2011 13:36
Не работает код внутри циклов DZHETIGAPA Events/DOM/Window 1 21.06.2011 01:03
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00