Я использую PHP для выпадающего меню. Мое меню выглядит так:Получить ширину предыдущего элемента списка и рассчитать текущее поле
<ul class="dropdown_top">
<li style="width:20px;"> /*main categories, width is an exapmle i don't realy know the exact width */
<ul style="margin-left:-10px>
<li></li> //subcategories
...
</ul>
</li>
<li> //main categories
/* the code i'm looking for, must do something like this: */
<?php
$style = - widthOfThePreviusMainCategoryLi() + marginLeftOfThePrevius_Ul_Li_Ul() = -30px ;
?>
<ul style="margin-left:<?=$style?>;"> /* this ul margin-left is the problem */
<li ></li>
...
</ul>
</li>
</ul>
Мне нужно получить ширину предыдущего элемента списка и рассчитать текущее поле.
Я видел пример с функцией jQuery outerWidth()
, но я не могу понять, как это использовать в моем случае.
Я пробовал это после публикации меню, но что я делаю неправильно?
<pre><code>
<script type=text/javascript>
$(document).ready(function(){
var number = $("#topmenu li").size();
var marginSum = -10; //the first
for(i=2;i < number; i++)
{
marginSum = marginSum - $("#topmenu li").slice(0,(i-1)).outerWidth(true); //OR
marginSum = marginSum - $("#topmenu li:eq("+(i-1)+")").outerWidth(true);
alert("Μargin of "+i+": "+marginSum + " prev width:"+$("#topmenu li:eq("+(i-1)+")").outerWidth(true)+" Margin:"+marginSum); //OR
alert("Μargin of "+i+": "+marginSum + " prev width:"+$("#topmenu li").slice(0,(i-1)).outerWidth(true)+" Margin:"+marginSum);
// $("#topmenu li").width(width);
}
});
</script>
</code></pre>
Я считаю, что функция outerWidth(true);
также вычисляет вложенную ul
, но я не знаю, что точно.
Τemporary, я решил это, используя статический массив $ style (-10, -30, ...) для текущего меню. Но меню изменяется динамически. Как я могу сделать это с помощью jquery? – ioaniatr
Вам не нужно указывать, что вы действительно могли бы использовать [Twitter-bootstrap navbar с Dropdowns] (http://twitter.github.com/bootstrap/javascript.html#dropdowns) или просто заполнить вложенный список PHP без CSS, а затем использовать CSS в стилистике для стилизации ваших элементов, заставив ширину lis фиксированной с известными полями и дополнением, вы можете добавить правый край к вложенной ul. Я знаю, что я сказал, что вы можете это сделать, но вам это тоже не нужно, проще использовать чистый CSS для этого, попробуйте мой обновленный ответ для более подробной информации. –
На самом деле, я хочу, чтобы мое меню выглядело так: http://www.caremarket.gr/DefaultV2.aspx. Но на моем сайте я хочу исправить проблему поля вложенной ul. Также мое меню будет меняться динамически, поэтому устанавливать фиксированные поля - это просто временное решение. – ioaniatr