簡體   English   中英

使用.next從一個UL遍歷到另一個UL

[英]Traverse from one UL to another UL with .next

我已經陷入了一些看似可能的事情,我只是無法弄清楚它2天!

我在.js文件中有這個:

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

上面是鍵盤右/左移動以通過按鍵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>

您可以使用此方法

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中的工作示例。

怎么樣:

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();
});
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()

});

DEMO

您也可以嘗試查克諾里斯代碼

您可以參考“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();
});

只需一個簡單的測試即可

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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM