여기 내 코드는 다음과 같습니다 그것은 기억 현재 열려있는 메뉴는 각 페이지로드 그 메뉴를 재개하기 위해 쿠키를 사용하는 메뉴 시스템의 JSjQuery - eq()는 index()와 다른 요소를 참조하는 것 같습니다. :/
jQuery(document).ready(function()
{
var cookieName = 'activeMenus';
var openMenus = (jQuery.cookie(cookieName) == null) ? 0 : jQuery.cookie(cookieName).substring(1).split(',');
var wookie = '';
jQuery('ul.menu li ul').css('display', 'none');
// Reopen all the menus from the cookie
if (openMenus != 0)
{
for (var i = 0; i < openMenus.length; i++)
{
alert('Opening: ' + openMenus[i]);
jQuery('ul.menu li').children('ul').eq(openMenus[i]).css('display', 'block');
}
}
// Hide the menu upon click and modify the cookie
jQuery('ul.menu span.topdaddy span').click(function()
{
// Toggle the menu for the clicked link
jQuery(this).parents('li').find('ul').slideToggle('slow', function()
{
// Once the menu has been toggled - Find all the open menus
jQuery('ul.menu li').children('ul:visible').each(function()
{
wookie += ',' + jQuery(this).index(); // Build the index list
jQuery.cookie(cookieName, wookie);
});
});
wookie = '';
});
});
HTML
<ul class="menu">
<li class="item1">
<a href="#"><span>Link 1</span></a>
</li>
<li class="parent item55">
<span class="topdaddy"><span>Link 2</span></span>
<ul>
<li class="item62">
<a href="#"><span>Link 3</span></a>
</li>
<li class="item63">
<a href="#"><span>Link 4</span></a>
</li>
</ul>
</li>
<li class="parent item56">
<span class="topdaddy"><span>Link 5</span></span>
<ul>
<li class="item69">
<a href="#"><span>Link 6</span></a>
</li>
<li class="parent item70">
<ul>
<li>asdasd</li>
</ul>
</li>
</ul>
</li
</ul>
업데이트되었습니다.
코드가 작동합니다 ...하지만 약간 버그가 있습니다.
.eq() 호출은 둘 다 1이 아니라 인덱스 2를 엽니 다.이 둘은 모두 0부터 시작하는 인덱스로되어 있으므로이 작업을 수행해야하는 이유는 없습니다.
아이디어가 있으십니까?
첫 번째 코드 블록은 각 'ul.menu li'의 첫 번째 하위 UL의 색인을 가져야합니다. 아니요? 동일한 UL을 참조하기 위해 두 코드 블록을 어떻게 일치시킬 수 있습니까? :/ – dave
'wookie + =', '+ jQuery (this) .parent() .index();'가'parent '의 색인을 가져 오는 것을 제외하고는'ul' (이것은'li'입니다). 'parent()'를 없애면'ul' 자체의 인덱스를 얻을 수 있습니다. – user113716
빠른 답변을 기다리고 싶지 않았어 ... 건배 :> 부모()를 제거하여 그냥 jQuery (this) .index()를 당기고 있지만 여전히 잘못된 메뉴 항목을 여는 것입니다. – dave