при :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 } } |
Почему в условии присваивание?
if (index_del_omega = 2 ) { // если в строку помещается 2 элемента nth-child прекрасно работает, а если не работает, значит в index_del_omega не приходит двойка. http://jsfiddle.net/YSD36/ |
приходит
дописываю и по загрузке и по ресайзу $('.cr-single-gallerey').prepend( innert_width +' - ' + otert_width+' - ' + index_del_omega +' - '+ index_del_alpha+ '|| '); все ок возврвщает, да и не при 2 работает |
двойка приходило, а вот .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. |