Javascript.RU

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

Неправильный расчет ширины элементов в списке. Работает через раз. jQuery
Привет всем форумчанам.
Проблема вот в чем.
Есть интернет магазин. С помощью списка, в горизонтальную линию выводится список категории магазина. Есть скрипт, который выставляет отступы для категорий, чтобы они растягивались на всю ширину.

Проблема в том, что работает он как-то через раз. Как правило, при первом открытии страницы расчет ширины идет слегка неправильный.При обновлении страницы все вроде норм.

Если не трудно, прошу указать, про что именно стоит читать, чтобы понять в чем ошибка.

Ссылка на сайт
$(document).ready(function(){
  var mainwidth = $('#nav').width();//ширина всего списка
  var elem_width =0;
  var count=0;
  $('#nav li.item1_norm').each(function(i){
    elem_width = elem_width+$(this).outerWidth(); //суммируем ширину всех элементов списка. именно тут идет неправильный расчет. 
    count=i+1;
  });
    alert(count);
  elem_width=parseInt(elem_width);
    alert(elem_width);
  var space = mainwidth-elem_width;//рассчитываем свободное место
  var one_margin = parseInt(space/(count)); //рассчитываем отступ для 1 элемента

  $('#nav li.item1_norm').each(function(e){
    $(this).css("margin-right", one_margin);
    if($(this).hasClass('last')){ //убираем отступ для последнего элемента списка
     $(this).css("margin-right", "0");
     }
    });
  });

Последний раз редактировалось ByKraB, 24.06.2012 в 13:44.
Ответить с цитированием
  #2 (permalink)  
Старый 24.06.2012, 12:33
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

ByKraB,
Сделайте скриншот - пометьте стрелками о каком элементе идёт речь
Cкриншот перезалейте сюда http://uploads.ru/ и выложите ссылку(вложения не работают)

И почему невозможно реализовать это средствами css ?
Ответить с цитированием
  #3 (permalink)  
Старый 24.06.2012, 12:57
Интересующийся
Отправить личное сообщение для ByKraB Посмотреть профиль Найти все сообщения от ByKraB
 
Регистрация: 24.01.2012
Сообщений: 19

каким образом можно реализовать через css динамическое определение отступов?
Ответить с цитированием
  #4 (permalink)  
Старый 24.06.2012, 13:16
Интересующийся
Отправить личное сообщение для ByKraB Посмотреть профиль Найти все сообщения от ByKraB
 
Регистрация: 24.01.2012
Сообщений: 19

Элемент списка переносится на новую строку.
http://uploads.ru/?v=W8dEv.png
А периодически работает.
http://uploads.ru/?v=w5SDZ.png
Ответить с цитированием
  #5 (permalink)  
Старый 24.06.2012, 13:29
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Цитата:
</div><!-- END Popup Collection -->

</li>

<li class="item1_norm "><a href="/collection/krupno-ghabaritnyi" class="top_level " >Крупно-габаритный</a>


<div class="popup_collection">
<div class="categories">
<div class="left_col" style="float:left">
Эта строка имхо с траблом - Ни концовки тега </li> и обрамление в <UL> вроде должно быть
Сообщение от ByKraB
каким образом можно реализовать через css динамическое определение отступов?
ну ширина контента 100% , margin-left100%/на N) если число товара в строке постояннно
Ответить с цитированием
  #6 (permalink)  
Старый 24.06.2012, 13:35
Интересующийся
Отправить личное сообщение для ByKraB Посмотреть профиль Найти все сообщения от ByKraB
 
Регистрация: 24.01.2012
Сообщений: 19

Deff,О каком постоянном числе можно говорить, если речь идет о ДИНАМИЧЕСКОМ определении отступов?
число категорий может меняться со временем.

с html версткой все правильно, никаких проблем нет.
проблема в скрипте. смотрел через отладчик, периодически ширина каждого li.item1_norm меньше, чем реальный размер. Поэтому и расчет выходит неверный.
Ответить с цитированием
  #7 (permalink)  
Старый 24.06.2012, 14:07
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от ByKraB
число категорий может меняться со временем.
ясно
Сообщение от ByKraB
с html версткой все правильно, никаких проблем нет.
Каким боком тады этот пункт почти во всех списках ?


Сообщение от ByKraB
проблема в скрипте. смотрел через отладчик, периодически ширина каждого li.item1_norm меньше, чем реальный размер. Поэтому и расчет выходит неверный
Попробуйте устанавливать отступы по событию загрузки window, - эффект тот жа ?
Ответить с цитированием
  #8 (permalink)  
Старый 24.06.2012, 14:17
Интересующийся
Отправить личное сообщение для ByKraB Посмотреть профиль Найти все сообщения от ByKraB
 
Регистрация: 24.01.2012
Сообщений: 19

какое отношение имеет элемент к верстке? это категория товаров и она есть на сайте.

window.onload действительно решил проблему.
теперь хотелось бы узнать ,почему $(document).ready() создавал проблему?
Ответить с цитированием
  #9 (permalink)  
Старый 24.06.2012, 14:23
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

ByKraB,
ну у мну подозрение что саnvas имеет продолжительную ассинхронную загрузку
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не сохраняются данные выведеные через jquery. Опрос. DuB Общие вопросы Javascript 1 05.03.2012 13:35
Изменение позиции элементов с помощью jquery не работает в IE6-8 ditasandditas Internet Explorer 0 15.08.2011 17:53
ссылка с fadeIn работает через раз oblomov86 jQuery 1 24.03.2011 17:52
скрипт работает в IE через раз jsVAN Internet Explorer 2 10.03.2011 03:27
Регулярка работает через раз. Andrej_2 Общие вопросы Javascript 17 17.05.2009 15:15