3

我让自己陷入了一些似乎可能的事情,我只是两天都没有弄清楚!

我的 .js 文件中有这个:

Mousetrap.bind('right', function() { $('li.active').next().click();  });
Mousetrap.bind('left', function() {  $('li.active').prev().click(); });

以上是将键盘右/左绑定以在 keypress 上的 UL 中移动所有 LI。

然后我在我的 HTML 中有这个;这是两个UL。

此刻,当我击中第一个 UL 中的最后一项时,它停止了。我试图让它跳到以下 UL 中的下一个 LI。

我试图弄清楚如何使用nextAll() - 多个列表遍历但无济于事,有人有什么想法吗?

<div class="item active">
<ul class="thumbnails">
  <li class="trigger active" data-target="0" data-fieldclass="data1">
    <p class="image"><img src="images/sias-duplessis.jpg" alt="Sias Du Plessis"></p>
    <p>@siasduplessis</p>
    <p>#RedFury</p>
  </li>
  <li class="trigger" data-target="1" data-fieldclass="data2">
    <p class="image"><img src="images/lance-witten.jpg" alt="Lance Witten"></p>
    <p>@LanceTheWitten</p>
    <p>#pegasus</p>
  </li>
  <li class="trigger" data-target="2" data-fieldclass="data3">
    <p class="image"><img src="images/sasha.jpg" alt="Sasha Martinengo"></p>
    <p>@F1sasha</p>
    <p>#BallztotheWallz</p>
  </li>
  <li class="trigger" data-target="3" data-fieldclass="data4">
    <p class="image"><img src="images/sipho.jpg" alt="Comrade Sipho"></p>
    <p>@comradesipho</p>
    <p>#badexample</p>
  </li>
  <li class="trigger" data-target="4" data-fieldclass="data5">
    <p class="image"><img src="images/carl-wastie.jpg" alt="Carl Wastie"></p>
    <p>@carlwastie</p>
    <p>#FrickinHORSome</p>
  </li>
</ul>
</div>

<div class="item">
<ul class="thumbnails">
  <li class="trigger" data-target="5" data-fieldclass="data6">
    <p class="image"><img src="images/craig-stack.jpg" alt="Craig Stack"></p>
    <p>@Craig_Stack</p>
    <p>#eldiablo</p>
  </li>
  <li class="trigger" data-target="6" data-fieldclass="data7">
    <p class="image"><img src="images/cale-pisarra.jpg" alt="Cale Pisarra"></p>
    <p>@calepissarra</p>
    <p>#thedirtyseagull</p>
  </li>
  <li class="trigger" data-target="7" data-fieldclass="data8">
    <p class="image"><img src="images/mr-cpt.jpg" alt="Mr Cape Town"></p>
    <p>@MrCPT</p>
    <p>#goodoak</p>
  </li>
  <li class="trigger" data-target="8" data-fieldclass="data9">
    <p class="image"><img src="images/life-is-savage.jpg" alt="Life Is Savage"></p>
    <p>@LifeisSavage</p>
    <p>#whoyourdaddy</p>
  </li>
  <li class="trigger" data-target="9" data-fieldclass="data10">
    <p class="image"><img src="images/brent-graham.jpg" alt="Brent Graham"></p>
    <p>@BrentGraham</p>
    <p>#thefalcon</p>
  </li>
</ul>

4

5 回答 5

5

您可以使用此方法

function NextClick()
{
    var li = $('ul.thumbnails li.active');
    var index = $("ul.thumbnails li").index(li);

    $("ul.thumbnails li").eq(index + 1).click();
}

function PrevClick()
{
    var li = $('ul.thumbnails li.active');
    var index = $("ul.thumbnails li").index(li);

    if(index > 0)
      $("ul.thumbnails li").eq(index - 1).click();
}

请参阅JsFiddle中的工作示例。

于 2013-06-25T17:55:03.410 回答
1

怎么样:

Mousetrap.bind('right', function() {
    if ($('li.active').is(':last-child'))
        obj = $('li.active').parents('ul').next('ul').find('li').first();
    else obj = $('li.active').next();
    obj.click();
});
于 2013-06-25T12:50:32.910 回答
1
Mousetrap.bind('right', function() { if($('li.active').next().hasClass("trigger"))$('li.active').next().click();
else $('li.active').closest(".item").next().find(".trigger").first().click()

});
Mousetrap.bind('left', function() { if($('li.active').prev().hasClass("trigger"))$('li.active').prev().click();
else $('li.active').closest(".item").prev().find(".trigger").last().click()

});

演示

你也可以试试 Chuck Norris Code

于 2013-06-25T17:58:35.300 回答
1

您可以参考“data-target”属性作为参考。

您的标记也可能缺少结尾。

Mousetrap.bind('right', function() {
  new_active_li = $('ul li[data-target^="' + (parseInt($('ul li.active').attr('data-target')) + 1) +'"]');
  $('ul li').removeClass('active');
  new_active_li.addClass('active');
  new_active_li.click();
});
Mousetrap.bind('left', function() {
  new_active_li = $('ul li[data-target^="' + (parseInt($('ul li.active').attr('data-target')) - 1) +'"]');
  $('ul li').removeClass('active');
  new_active_li.addClass('active');
  new_active_li.click();
});
于 2013-06-25T18:33:59.747 回答
0

只是一个简单的测试就可以了

var test = $("ul li.last").next().html();
if(test == 'undefined'){
    // jump to next list
    var nextList = $("li.active").parent().parent().next().find("ul");
}else{
    // the normal code
}
于 2013-06-25T19:10:57.957 回答