Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   при :nth-child(2n) скрипт не работает (https://javascript.ru/forum/jquery/45870-pri-nth-child-2n-skript-ne-rabotaet.html)

wp_panda 19.03.2014 04:05

при :nth-child(2n) скрипт не работает
 
Укажите ошибку пожалуйста, при index_del_omega = 2 условие не срабатывает в остальных случаях работает.
function sizer() {
			var innert_width = $('.cr-single-gallerey').width(); // ширина родителя 
			var otert_width = $('.cr-single-gallerey ul li').width(); // ширина элемента
			var index_del  = innert_width/otert_width; // считаем сколько элементов помещается в строку
			var index_del_omega  =  parseInt(index_del.toFixed(0),10); //преобразуем переменную и отбрасываем знаки после запятой 
			var index_del_alpha  =  index_del_omega+1; // получаем первый элемент следующей строки строки 
			
			if (index_del_omega = 2 ) { // если в строку помещается 2 элемента 
			$('.cr-single-gallerey ul li').filter( ':odd' ).addClass('omega').siblings(".cr-single-gallerey ul li").removeClass("omega"); // четным присваеваем класс omega
			$('.cr-single-gallerey ul li').filter( ':even' ).addClass('alpha').siblings(".cr-single-gallerey ul li").removeClass("alpha"); // нечетным присваеваем класс alpha
			} else if (index_del_omega >2 ) { // если в строку помещается больше 2-х элементов
			$('.cr-single-gallerey ul li:nth-child('+ index_del_omega+ 'n)').addClass('omega').siblings(".cr-single-gallerey ul li").removeClass("omega"); // последнему в строке присваеваем класс omega
			$('.cr-single-gallerey ul li:nth-child('+ index_del_alpha + 'n)').addClass('alpha').siblings(".cr-single-gallerey ul li").removeClass("alpha");// первому в строке присваеваем класс alpha
			$('.cr-single-gallerey ul li:eq(0)').addClass('alpha');//самому первому присваиваем alpha
			} else { // в остальных случаях (1 элемент в строку)
			$(".cr-single-gallerey ul li").addClass("omega"); // всем присваеваем alpha
			$(".cr-single-gallerey ul li").addClass("alpha"); // всем присваеваем omega
			}
	}


та же ситуация если делать так
if (index_del_omega >1 ) { // если в строку помещается больше 1 го элемента
			$('.cr-single-gallerey ul li:nth-child('+ index_del_omega+ 'n)').addClass('omega').siblings(".cr-single-gallerey ul li").removeClass("omega"); // последнему в строке присваеваем класс omega
			$('.cr-single-gallerey ul li:nth-child('+ index_del_alpha + 'n)').addClass('alpha').siblings(".cr-single-gallerey ul li").removeClass("alpha");// первому в строке присваеваем класс alpha
			$('.cr-single-gallerey ul li:eq(0)').addClass('alpha');//самому первому присваиваем alpha
			} else { // в остальных случаях (1 элемент в строку)
			$(".cr-single-gallerey ul li").addClass("omega"); // всем присваеваем alpha
			$(".cr-single-gallerey ul li").addClass("alpha"); // всем присваеваем omega
			}
	}

bayrach 19.03.2014 04:26

Почему в условии присваивание?
if (index_del_omega = 2 ) { // если в строку помещается 2 элемента

nth-child прекрасно работает, а если не работает, значит в index_del_omega не приходит двойка. http://jsfiddle.net/YSD36/

wp_panda 19.03.2014 04:30

приходит
дописываю и по загрузке и по ресайзу
$('.cr-single-gallerey').prepend( innert_width +' - ' + otert_width+' - ' + index_del_omega +' - '+  index_del_alpha+ '||   ');

все ок возврвщает, да и не при 2 работает

wp_panda 19.03.2014 05:25

двойка приходило, а вот .siblings() выбирал вообще все, почему не разобрался.
сделал через адские селекторы
function sizer() {
			var innert_width = $('.cr-single-gallerey').width();
			var otert_width = $('.cr-single-gallerey ul li').width();
			var index_del  = innert_width/otert_width;
			var index_del_omega  =  parseInt(index_del.toFixed(0),10);
			var index_del_alpha  =  index_del_omega+1;
			
			if (index_del_omega >1) {
			$('.cr-single-gallerey ul li:nth-child('+ index_del_omega+ 'n)').addClass('omega');
			$('.cr-single-gallerey ul li:not(.cr-single-gallerey ul li:nth-child('+ index_del_omega+ 'n))').removeClass("omega");
			$('.cr-single-gallerey ul li:nth-child('+ index_del_omega + 'n)').next().addClass('alpha');
			$('.cr-single-gallerey ul li:not(.cr-single-gallerey ul li:nth-child('+ index_del_omega + 'n))').next().removeClass("alpha");
			$('.cr-single-gallerey ul li:eq(0)').addClass('alpha');
			} else {
			$(".cr-single-gallerey ul li").addClass("omega");
			$(".cr-single-gallerey ul li").addClass("alpha");
			}
	}


Часовой пояс GMT +3, время: 05:02.