Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.03.2015, 20:37
Аспирант
Отправить личное сообщение для aleksandr8i Посмотреть профиль Найти все сообщения от aleksandr8i
 
Регистрация: 16.06.2012
Сообщений: 44

Присвоить разные class элементу li, какаие есть способы?
Доброго времени суток.

Есть вот такое, примерное, дерево элементов
<ul>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
</ul>

and style
li{float:left;}


есть js
$(document).ready(function(){
    $(".bg_link").hover(function(){
        $( this ).addClass("active");
        },function(){
        $( this ).removeClass("active");
    });
});

Как видно из выше приведенного кода все ссылки расположены горизонтально.
У меня вопрос следующий: Как можно присвоить элементам li тем которые ближе к левому части экрана расположены один class, а к тем элементам li которые расположены правее другой class?

Буду благодарен любой помощи.
Ответить с цитированием
  #2 (permalink)  
Старый 12.03.2015, 20:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

aleksandr8i,
а который по середине тому какой класс?
Ответить с цитированием
  #3 (permalink)  
Старый 12.03.2015, 20:47
Аспирант
Отправить личное сообщение для aleksandr8i Посмотреть профиль Найти все сообщения от aleksandr8i
 
Регистрация: 16.06.2012
Сообщений: 44

Сообщение от рони Посмотреть сообщение
aleksandr8i,
а который по середине тому какой класс?
любой из двух.
Ответить с цитированием
  #4 (permalink)  
Старый 12.03.2015, 20:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

aleksandr8i,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  ul{
    margin:0 auto;
    width:350px;
  }

  li{
    float:left;
    width:50px;
    list-style:none;
  }

  li:hover{
    background:#00FF00;
  }

  li:nth-child(n +5):hover{
    background:#FF3333;
  }
  </style>
</head>

<body>  <ul>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
</ul>



</body>

</html>
Ответить с цитированием
  #5 (permalink)  
Старый 12.03.2015, 21:22
Аспирант
Отправить личное сообщение для aleksandr8i Посмотреть профиль Найти все сообщения от aleksandr8i
 
Регистрация: 16.06.2012
Сообщений: 44

Сообщение от рони Посмотреть сообщение
aleksandr8i,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  ul{
    margin:0 auto;
    width:350px;
  }

  li{
    float:left;
    width:50px;
    list-style:none;
  }

  li:hover{
    background:#00FF00;
  }

  li:nth-child(n +5):hover{
    background:#FF3333;
  }
  </style>
</head>

<body>  <ul>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
</ul>



</body>

</html>
Спасибо. Ваш пример был полезен, понял что нужно использовать nth-child в js буду искать примеры js кода, где используется nth-child.
Но буду так же благодарен, если кто-то здесь приведет пример
Ответить с цитированием
  #6 (permalink)  
Старый 12.03.2015, 21:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от aleksandr8i
нужно использовать nth-child
взять индекс нажатого элемента и сравнить с половиной длины всех элементов
Ответить с цитированием
  #7 (permalink)  
Старый 12.03.2015, 21:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

aleksandr8i,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  ul{
    margin:0 auto;
    width:350px;
  }

  li{
    float:left;
    width:50px;
    list-style:none;
  }

  .active{
    background:#00FF00;
  }

  .super{
    background:#FF3333;
  }
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
     $(function(){
       var li = $(".bg_link"), middle= li.length/2;
      li.hover(function(){
        var i = li.index(this);
        $( this ).addClass(i < middle? "active" : "super");
        },function(){
        $( this ).removeClass("active super");
    });
});
  </script>
</head>

<body>  <ul>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
<li class="bg_link">link</li>
</ul>



</body>

</html>

Последний раз редактировалось рони, 12.03.2015 в 22:02.
Ответить с цитированием
  #8 (permalink)  
Старый 12.03.2015, 21:48
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

рони, ты ли это? Непривычно как-то без a b c
К слову, len все же не совсем подходит. Лучше half, middle, center.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #9 (permalink)  
Старый 12.03.2015, 22:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

danik.js,
ok -- лучше названия подсказывай чем матерится
Ответить с цитированием
  #10 (permalink)  
Старый 12.03.2015, 22:44
Аспирант
Отправить личное сообщение для aleksandr8i Посмотреть профиль Найти все сообщения от aleksandr8i
 
Регистрация: 16.06.2012
Сообщений: 44

рони, спасибо еще раз, это как раз то что мне нужно было.
Но я упустил важный момент, при описании задачи в первом сообщении.
Элементов li достаточно много поэтому они все не помещаются в одну линию горизонта и переходят во второй ряд, образуя 3 ряд и т.д

Вот проблема которую наблюдаю:
При наведении курсора на элементы li 1-го ряда присвоен class="active"
у 2-го ряда элементов на половину class="active" и class="super"
у 3-го ряда элементов class="super"
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как присвоить класс элементу после проверки cookies Round jQuery 20 17.10.2013 09:47
Отлов изменения размера элемента. Какие способы есть? danik.js Events/DOM/Window 3 05.02.2013 11:00
Как присвоить значение элементу формы материнского окна из дочернего? libinstyle Events/DOM/Window 15 28.07.2010 16:56
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37