Если в контейнере нечетное количество блоков, добавить последнему class
Есть родительский блок .main_ul (он является ul'ом), в нем находятся li. Нужно чтобы если количество li нечетное, то последнему добавлялся класс .mainlast_li.
Помогите пожалуйста новичку |
subbziro,
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> .mainlast_li { background-color: #1b6d85; } </style> <script src="//code.jquery.com/jquery-1.11.3.min.js"></script> </head> <body> <ul class="main_ul "> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul> <script> if(!$('.main_ul li').length % 2 == 0){ $('.main_ul li:last-child').addClass('mainlast_li'); } </script> </body> </html> |
|
Цитата:
|
yazonnile,
стилями не знаю как ) надо смотреть ) |
laimas,
а можешь пояснить ) $('.main_ul li').length & 1 допустим $('.main_ul li').length = 5; тогда 5&1 или 4&1 , а что дальше? :) Как тут с четными и нечётными?) |
$('.main_ul > li:nth-of-type(2n+1):last-child').addClass('mainlast_li'); Но лучше прям в CSS селектором прописать нужный стиль, тогда никакой класс добавлять не нужно будет. |
Цитата:
Это как с делением/умножением, если условия позволяют, то выгоднее не делить число а сдвинуть его на N разрядов вправо, а при умножении влево. |
laimas,
спасибо ,за объяснение , но я всё равно не понял :-? А ссылку можно получить? :) |
А чего тут не понятного:
0 = 0000 1 = 0001 2 = 0010 3 = 0011 4 = 0100 5 = 0101 .... Рассказывать, что будет при логической операции AND чисел и 1, или не надо? Ссылку на что? |
laimas,
вообщем после Цитата:
|
Mess4me, побитовые операторы лучше использовать там, где они действительно нужны, например при работе с бинарными данными. В данном случае лучше использовать деление по модулю, так как это более правильный подход, нежели использование побитовых операций не по назначению. ;)
Вот пару примеров, как делать не нужно: ~str.indexOf('str') foo ^= 1 А ниже правильные аналоги: str.indexOf('str') != -1 или indexOf('str') + 1 foo = !foo |
Ну да, все просто. А почему при проверки четности выгодно использовать AND, а нечетности XOR, предлагаю догадаться самому.
|
Цитата:
|
Ruslan_xDD,
спасибо :thanks: :thanks: :thanks: |
Цитата:
Что то вы нагородили много пугающего. |
laimas, это дело стиля кода, не более.
В некоторых ситуациях это гораздо проще, не спорю. Но если писать по стилю, то использовать побитовые операторы не нужно в таких ситуациях. К тому же, это портит сам код в плане понимания. Где-то даже видел статью на харбе по этому поводу. Я сам раньше использовал побитовые операторы в условиях и т.д., но со временем пришёл к выводу, что лучше так делать не стоит. |
Цитата:
Это вы уже о вкусах и красоте, а к компьютерным делам, это отношения не имеет. Нет чисел "не бинарных" на компьютере, как и нет на нем строк, десятичных чисел, шестнадцатеричных и прочего, все только бинарное. Мы определяем трактовать то или иное в том или ином виде, а любому языку придется все это перелопачивать в удобоваримое для компьютера, и чем больше лишнего, тем дольше ему ворочаться, а компьютеру париться. Любой язык обладает набором логических операций, которые можно и нужно использовать. А что не понятно, ну так это как понимать суть написанного, кому то понятно "мама мыла раму", кому только "мама (человек в платье, женщина) мыла (водой с мылом) раму (оконную)". Все остальное надуманное донельзя. :) |
Цитата:
http://jsfiddle.net/rhq1ynsq/1/ |
yazonnile,
аа ... не увидел . Пардон) |
Mess4me,
Ruslan_xDD, yazonnile, Всем спасибо за ответы, попробовал разными вариантами, через css более аккуратно вышло... js почему-то не сработал, может я что не так сделал. Еще раз спасибо!:thanks: |
Часовой пояс GMT +3, время: 07:59. |