Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.01.2013, 19:41
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Как назначить стиль в зависимости от кол-ва элементов в списке?
Есть список с элементами, нужно этому списку назначать разные стили в зависимости от кол-ва элементов в нем. Если один элемент, то будет class="area size1", если два — class="area size2" и т. д. Хочется сделать этот код компактным и желательно поместить внутрь тега списка. Как это сделать?
<ul class="area" onload="???">
    <li></li>
    ...
    <li></li>
</ul>
Ответить с цитированием
  #2 (permalink)  
Старый 08.01.2013, 20:08
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<style>
ul.size-2 {
 color:blue;
}
ul.size-3 {
 color:red;
}
</style>



<ul class="area">
    <li>dsds</li>
    <li>dsds</li>
    ...
    <li>sdds</li>
</ul>

<ul class="area">
    <li>dsds</li>
    ...
    <li>sdds</li>
</ul>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("ul.area").each(function() {
  var a="size-" + $(this).find('li').length;
  $(this).removeClass(a).addClass(a)
});
});
</script>

Последний раз редактировалось Deff, 08.01.2013 в 23:17.
Ответить с цитированием
  #3 (permalink)  
Старый 08.01.2013, 23:02
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Работает, но слишком далеко от тега. По сути, мне нужно эмулировать CSS-селектор, который назначает разные стили в зависимости от количества элементов в контейнере. Поэтому логика должна быть как можно ближе к тегу. Может быть есть другие события помимо onload, которые подойдут?
Ответить с цитированием
  #4 (permalink)  
Старый 08.01.2013, 23:16
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Shitbox2,
Сообщение от Shitbox2
Работает, но слишком далеко от тега
Вариант работает для всех тегов с данным классом
Достаточно одного на странице, ставите в удобное место
Переместил
Ответить с цитированием
  #5 (permalink)  
Старый 08.01.2013, 23:48
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Хм... А может быть и есть логика. Поместить на страницу кусок кода, отвечающего непосредственно за оформление. И что-то вроде такого написать
<ul class="area" data-addCountElemsClass="size">
    <li>dsds</li>
    ...
    <li>sdds</li>
</ul>
Своего рода расширение CSS
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать пункт в выпадающем списке по умолчанию, после перехода по ссылке? Damian Элементы интерфейса 18 24.09.2012 18:17
Как получить значения вышестоящих элементов дерева TreeStore ? Allan Stark ExtJS 1 31.07.2012 16:48
Как обрезать строку и добавить символы в середине, в зависимости от длинны строки andreyua Firefox/Mozilla 12 10.12.2010 15:44
Как назначить событие html-элементу? Jony X Общие вопросы Javascript 15 15.09.2009 20:55
Как снять фокус со всех элементов? Logo Общие вопросы Javascript 7 02.07.2009 23:53