Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Невидимый li (https://javascript.ru/forum/dom-window/32167-nevidimyjj-li.html)

Miha 05.10.2012 16:44

Невидимый li
 
Вобщем есть древовидное многоуровневое меню (id = "left-menu") примерно такой структуры:
- Пакет предложений
- Каталог товаров
- Товары 1
- Товары 2
- .............
- Товары n

И мне надо чтоб первый li (тот что "Пакет предложений") был невидимым (именно невидимым - типа как display:none).
Меню формируется динамически, естественно на php.
Сделать через псевдоклассы css такие как например :first-child неполучилось, потому как display:none присваивается и тегу li, который содержит "Товары 1". Решил сделать через javascript, но так как опыта в нем у меня крайне мало, самому откопать в гугле решение не получилось.
Вот решил спросить здесь у умных людей :)
Подскажите пожалуйста решение кто знает

Aetae 05.10.2012 16:56

Код сформированный покажи.

Miha 05.10.2012 17:03

<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?
//echo '<pre>'; print_r($arResult); echo '</pre>';
if (count($arResult) < 1)
return;

$bManyIblock = array_key_exists("IBLOCK_ROOT_ITEM", $arResult[0]["PARAMS"]);
//$bNameIblock = $arResult[0]["TEXT"];
//print_r($bManyIblock);
//print_r($bNameIblock);
?>

<ul id="left-menu">

<?
$previousLevel = 0;

foreach($arResult as $key => $arItem){
//print_r ($arItem);

if ($previousLevel && $arItem["DEPTH_LEVEL"] < $previousLevel){

echo str_repeat("</ul></li>", ($previousLevel - $arItem["DEPTH_LEVEL"]));
}


if ($arItem["IS_PARENT"]):
$i = $key;
$bHasSelected = $arItem['SELECTED'];
$childSelected = false;
if (!$bHasSelected)
{
while ($arResult[++$i]['DEPTH_LEVEL'] > $arItem['DEPTH_LEVEL'])
{
if ($arResult[$i]['SELECTED'])
{
$bHasSelected = $childSelected = true; break;
}
}
}

$className = $nHasSelected ? 'selected' : '';//($bHasSelected ? 'selected' : '');
?>
<? if ($arItem['DEPTH_LEVEL'] > 1 && !$childSelected && $bHasSelected):?>
<li class="current">
<a class="selected" href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a>
<ul>

<? else:?>
<li<?=$bHasSelected ? ' class="selected"' : ''?>>
<a<?=$bHasSelected ? ' class="selected"' : ''?> href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a>
<ul<?=$bHasSelected || ($bManyIblock && $arItem['DEPTH_LEVEL'] <= 1) ? '' : ' style="display: none;"'?>>
<? endif?>


<?
else:
if ($arItem["PERMISSION"] > "D"):
$className = $arItem['SELECTED'] ? $arItem['DEPTH_LEVEL'] > 1 ? 'current' : "selected" : '';
?>
<li<?=$className ? ' class="'.$className.'"' : ''?>>

<a<?if ($arItem['SELECTED']):?> class="selected"<?endif?> href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a>

</li>
<?
endif;
endif;

$previousLevel = $arItem["DEPTH_LEVEL"];
}

if ($previousLevel > 1)://close last item tags
echo str_repeat("</ul></li>", ($previousLevel-1) );
endif;
?>
</ul>



Вот код пхп согласно которому формируется меню.

Margarita 05.10.2012 21:55

как вариант:
$("#left-menu li").eq(0).hide();

Aetae 06.10.2012 02:39

Сформированный, сказано же. Разбираться в говнопхп никакого желания нет.

Your 06.10.2012 05:38

<матное слово>

За такое руки отрывают...

Miha 08.10.2012 09:50

Цитата:

Сообщение от Aetae (Сообщение 208476)
Сформированный, сказано же. Разбираться в говнопхп никакого желания нет.

<ul id="left-menu">

		<li>

			<a href="/catalog/products/">Пакет предложений</a>

		</li>
					<li>
			<a href="/catalog/products/">Каталог товаров</a>
			<ul>
		

					<li>
			<a href="/catalog/products/40/">Бумага и бумажная продукция </a>
			<ul style="display: none;">
		

					<li>
			<a href="/catalog/products/41/">Бумага для офисного оборудования </a>
			<ul style="display: none;">
		

		<li>

			<a href="/catalog/products/42/">Бумага для принтеров</a>

		</li>
		<li>

			<a href="/catalog/products/43/">Бумага цветная</a>

		</li>
					<li>
			<a href="/catalog/products/44/">Бумага для цветной печати</a>
			<ul style="display: none;">
		

		<li>

			<a href="/catalog/products/45/">Бумага для полноцветной лазерной печати</a>

		</li>
		<li>

			<a href="/catalog/products/46/">Бумага для полноцветной лазерной печати Glossy</a>

		</li>
		<li>

			<a href="/catalog/products/47/">Бумага для полноцветной лазерной печати Silk</a>

		</li>
		<li>

			<a href="/catalog/products/48/">Бумага для полноцветной лазерной печати Style</a>

		</li>
</ul></li></ul></li></ul></li>					<li>
			<a href="/catalog/products/49/">Техника </a>
			<ul style="display: none;">
		

					<li>
			<a href="/catalog/products/50/">Компьютеры</a>
			<ul style="display: none;">
		

		<li>

			<a href="/catalog/products/51/">Компьютеры IRU Premium</a>

		</li>
		<li>

			<a href="/catalog/products/52/">Компьютеры IRU для дома</a>

		</li>
</ul></li></ul></li></ul></li>	</ul>


Сформированный. Такой что ли? :)

lord2kim 08.10.2012 10:08

Miha, после списка разместите, но наверняка есть решение получше
<script>
document.getElementById("left-menu").children[0].style.display = "none";
</script>

Miha 08.10.2012 10:24

Цитата:

Сообщение от lord2kim (Сообщение 208748)
Miha, после списка разместите, но наверняка есть решение получше
<script>
document.getElementById("left-menu").children[0].style.display = "none";
</script>

А решения получше и не надо ) Итак сработало на ура! Спасибо Вам, Вы гений )))


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