0
這裏是我的代碼:修訂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>
這是一個使用Cookie來記住當前打開的菜單重新這些菜單的每個頁面加載的菜單系統。
該代碼有效......但這是一個小錯誤。
.eq()調用打開索引2而不是1.它們都應該是基於0的索引,所以我沒有理由認爲它應該這樣做。
任何想法?
第一個代碼塊應該得到每個'ul.menu li'的第一個子UL的索引,不是嗎?我將如何匹配這兩個代碼塊來引用相同的UL? :/ – dave 2010-03-03 00:41:14
這將是,除了這行'wookie + =','+ jQuery(this).parent()。index();'是抓住可見'ul'的**父**的索引(這是'li')。擺脫'parent()',你會得到'ul'本身的索引。 – user113716 2010-03-03 00:52:04
不期待快速回復...乾杯:>我刪除了父(),所以它只是拉jQuery(this).index()但它仍然打開錯誤的菜單項。 – dave 2010-03-03 01:07:44