【问题标题】:jQuery Click the Next anchor tag from nav-pills after timestampjQuery 在时间戳后单击来自 nav-pills 的下一个锚标记
【发布时间】:2020-04-28 13:32:59
【问题描述】:

我正在尝试使用 jquery 单击下一个导航链接。我正在使用带有 Jquery 3.4.1 的 Bootstrap 4。我正在使用 Vertical Nav Pills,我想在一段时间后激活它。

<!-- Tabs nav -->
        <div class="nav nav-pills" id="v-pills-tab" role="tablist" aria-orientation="vertical">
            <a class="nav-link active" id="v-pills-home-tab" data-toggle="pill" href="#v-pills-home" role="tab" aria-controls="v-pills-home" aria-selected="true">
            <div class="categoryBox">
                <img src="https://dummyimage.com/240x150/ff6500/fff">
                <p>Real Estate</p>
            </div>    
            </a>

            <a class="nav-link" id="v-pills-profile-tab" data-toggle="pill" href="#v-pills-profile" role="tab" aria-controls="v-pills-profile" aria-selected="false">
            <div class="categoryBox">
                <img src="https://dummyimage.com/240x150/ff6500/fff">
                <p>eCommerce</p>
            </div>
            </a>

            <a class="nav-link" id="v-pills-messages-tab" data-toggle="pill" href="#v-pills-messages" role="tab" aria-controls="v-pills-messages" aria-selected="false">
            <div class="categoryBox">
                <img src="https://dummyimage.com/240x150/ff6500/fff">
                <p>Fashion Photo Editing</p>
            </div>
            </a>

            <a class="nav-link" id="v-pills-settings-tab" data-toggle="pill" href="#v-pills-settings" role="tab" aria-controls="v-pills-settings" aria-selected="false">
            <div class="categoryBox">
                <img src="https://dummyimage.com/240x150/ff6500/fff">
                <p>Furniture Photo Editing</p>
            </div>
            </a>

        </div>

jquery

jQuery(document).ready(function(e) {

    var click1 = 0;
    setInterval(function(){
        if(jQuery('.nav-pills .nav-link').length == click1)
        {
            click1 = 0; 
        }           
        jQuery('.nav-pills .nav-link:eq( '+click1+' ) a').trigger('click');
        click1 ++;  

    },500);

});

我不确定为什么它不起作用。请协助。

【问题讨论】:

  • 您的选择器似乎有点奇怪。仔细检查。当使用$('.nav-link').eq( click1 ).click(); 而不是jQuery('.nav-pills .nav-link:eq( '+click1+' ) a').trigger('click'); 时,它可以工作fiddle

标签: jquery bootstrap-4 click nav-pills


【解决方案1】:

正如我在评论中提到的,选择器没有选择正确的元素。

jQuery('.nav-pills .nav-link:eq( '+click1+' ) a').trigger('click');

将选择具有 .nav-link 类的元素的&lt;a&gt;-tag。由于 .nav-link 元素本身就是 &lt;a&gt; 标记,您只需将其从末尾移除即可:

function toggleActiveLink() {
  var interval = setInterval(function(){
    if(jQuery('.nav-pills .nav-link').length == click1)
    {
      click1 = 0; 
    }           
    jQuery('.nav-pills .nav-link:eq( '+click1+' )').trigger('click');
    click1 ++;  

  },500);
  return interval;
}

var click1 = 0;
var activeLinkInterval = toggleActiveLink();

$('.nav-link').on('mouseenter', function() {
  clearInterval(activeLinkInterval);
}).on('mouseleave', function() {
  activeLinkInterval = toggleActiveLink();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.bundle.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet" />
<div class="nav nav-pills" id="v-pills-tab" role="tablist" aria-orientation="vertical">
  <a class="nav-link active" id="v-pills-home-tab" data-toggle="pill" href="#v-pills-home" role="tab" aria-controls="v-pills-home" aria-selected="true">
    <div class="categoryBox">
      <img src="https://dummyimage.com/240x150/ff6500/fff">
      <p>Real Estate</p>
    </div>
  </a>

  <a class="nav-link" id="v-pills-profile-tab" data-toggle="pill" href="#v-pills-profile" role="tab" aria-controls="v-pills-profile" aria-selected="false">
    <div class="categoryBox">
      <img src="https://dummyimage.com/240x150/ff6500/fff">
      <p>eCommerce</p>
    </div>
  </a>

  <a class="nav-link" id="v-pills-messages-tab" data-toggle="pill" href="#v-pills-messages" role="tab" aria-controls="v-pills-messages" aria-selected="false">
    <div class="categoryBox">
      <img src="https://dummyimage.com/240x150/ff6500/fff">
      <p>Fashion Photo Editing</p>
    </div>
  </a>

  <a class="nav-link" id="v-pills-settings-tab" data-toggle="pill" href="#v-pills-settings" role="tab" aria-controls="v-pills-settings" aria-selected="false">
    <div class="categoryBox">
      <img src="https://dummyimage.com/240x150/ff6500/fff">
      <p>Furniture Photo Editing</p>
    </div>
  </a>

</div>

【讨论】:

  • 非常感谢您的帮助。如果鼠标光标处于活动状态,我可以停止它吗?
  • 您可以在mouseenter 上使用clearInterval 清除先前的间隔,然后在mouseleave 之后将其设置为新的.. 我编辑了答案以添加此功能
  • 感谢您的帮助。我真的很感激。
  • 如果它解决了您的问题,请确保接受答案。很高兴我能帮上忙。
  • 是的,它正在工作
猜你喜欢
  • 2016-05-24
  • 2011-04-04
  • 1970-01-01
  • 2013-08-27
  • 2022-09-26
  • 1970-01-01
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
相关资源
最近更新 更多