-1

我为每个背景页面都有一组图像,并且我正在使用一个数组来根据我单击的菜单项加载每个图像。菜单项也有子菜单,整个菜单系统应该与数组项“同步”:

html菜单:

Home (page 1) (menu item hidden but should be "Menu 1" if it would be displayed)

 <ul id="menu">
    <li><a href="page2">Menu 2</a></li>
    <li><a href="page3">Menu 3</a> 
          <ul id="sub-menu">
               <li><a href="page4">Menu 4</a></li>
          </ul>
    </li>
    <li><a href="page5">Menu 5</a></li>
 </ul>

大批:

[0] 1.jpg (image for the home where the menu name item isn't displayed)
[1] 2.jpg (this should be for Menu 2)
[2] 3.jpg (this should be for Menu 3)
[3] 4.jpg (this should be for Menu 4)
[4] 5.jpg (this should be for Menu 5)

当站点加载时,它会显示 [0] 1.jpg,这是主页。但是我们可以点击的第一个项目是“菜单 2”,因为“主页”按钮没有显示在菜单中,它应该转到 [1] 2.jpg。

这是我使用的 jQuery:

jQuery (function($) {
  $("#menu .menu li").each(function (index) {
    var item = $(this);
    $("a", item).click(function (e) {
        e.preventDefault();
        api.goTo(index+1);
    });
   });
});

使用“api.goTo(index+1);” (在这里使用超大插件)我说(或者我认为我是)在第一次单击菜单项时,转到应该是 [1] 但它不是的 index+1 ,它看起来仍然是[0] 用于主页。此外,我认为嵌套项目仍将遵循索引序列。

基本上我无法获得正确页面的正确图像。这就像我没有根据我单击的菜单项导航数组。

在这种情况下,Ps 索引是 jquery 循环中项目的基于 0 的索引

4

1 回答 1

1

我不知道你在做什么,但是你正在使用一个变量在循环内绑定点击函数,变量会改变,结果不会是你所期望的。

也许这会有所帮助?

$('a', 'li').on('click', function(e) {
     e.preventDefault();
     var index = this.href.replace('page', '');
     api.goTo(index);
});

由于子菜单在点击时从 href 中获取正确的数字似乎是最简单的。

引用数组中的值时,您必须这样做:

var index = ['1.jpg', '2.jpg', '3.jpg'] //an array, starts with zero

var firstimage = index[0]; //this variable is now the string "1.jpg"

我猜您只是将一个数字传递给该api.goTo(number)函数,该函数会在您的数组中找到图像链接,至少在我看来是这样吗?

于 2012-05-21T16:42:56.020 回答