【问题标题】:Error: cannot call methods on tabs prior to initialization; attempted to call method 'option'错误:无法在初始化之前调用选项卡上的方法;试图调用方法“选项”
【发布时间】:2017-06-30 20:33:01
【问题描述】:

我正在尝试使用 JQuery 自动选择一个选项卡。 这是我的代码。我试图初始化 JQuery 但仍然得到相同的错误。

 $("ul.tabs").tabs();
 $( "#messages" ).tabs( "option", "active", 2 );

HTML

<ul class="nav nav-tabs" id="myTab" style="top: -78px;width:100%;">
  <div class="liner"></div>
  <li class="active">
    <a href="#home" data-toggle="tab" title="welcome">
      <span class="round-tabs one">
        <i class="glyphicon glyphicon-globe" ></i>
       </span>
    </a>
  </li>
  <li>
    <a href="#profile" data-toggle="tab" title="Email forwarding">
      <span class="round-tabs two">
          <i class="glyphicon glyphicon-envelope" ></i>
      </span>
    </a>
  </li>
  <li class="">
    <a href="#messages" data-toggle="tab" title="Edit your spins here">
      <span class="round-tabs three">
           <i class="glyphicon glyphicon-pencil" ></i>
      </span>
    </a>
  </li>
</ul>

【问题讨论】:

  • $("ul.tabs").tabs(); $("ul.tabs").tabs( "option", "active", 2);
  • 能否请您解释一下它仍然无法正常工作
  • 我不能确定,因为你没有包含任何 html,这就是为什么这是一个评论。但很明显,您在 "ul.tabs" 元素上初始化了 tabs 小部件,但正在尝试更改其他选项卡上的选项卡选项。
  • 我已经更新了我在 html 中包含的问题

标签: jquery jquery-ui


【解决方案1】:

按照第一个示例中的 html https://jqueryui.com/tabs/

您在“ul.tabs”元素上初始化了选项卡小部件,但正在尝试更改其他选项卡上的选项。

$("ul.tabs").tabs();  
$("ul.tabs").tabs("option", "active", 2);

【讨论】:

    【解决方案2】:

    您的 HTML 与您的选择器不匹配,因此我已使用假设和脚本更新了 html。更新为在目标列表中显示/使用索引。

    var mytabs = $("#mytabs");
    mytabs.tabs();
    // set by index, a bit inflexible for you  
    //mytabs.tabs("option", "active", 2);
    // get the index in the list and use it
    var atarget = $('#messages').index(".mytargets");
    mytabs.tabs("option", "active", atarget );
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
    <div id="mytabs">
        <ul class="nav nav-tabs" id="myTab" style="top: -78px;width:100%;">
          <div class="liner"></div>
          <li class="active">
            <a href="#home" data-toggle="tab" title="welcome">
              <span class="round-tabs one">
                <i class="glyphicon glyphicon-globe" ></i>
               </span>
            </a>
          </li>
          <li>
            <a href="#profile" data-toggle="tab" title="Email forwarding">
              <span class="round-tabs two">
                  <i class="glyphicon glyphicon-envelope" ></i>
              </span>
            </a>
          </li>
          <li class="">
            <a href="#messages" data-toggle="tab" title="Edit your spins here">
              <span class="round-tabs three">
                   <i class="glyphicon glyphicon-pencil" ></i>
              </span>
            </a>
          </li>
        </ul>
    <div id="home" class="mytargets">I am home</div>
    <div id="profile" class="mytargets">I am profile</div>
    <div id="messages" class="mytargets">I am messages</div>
    </div>

    请注意,我已更新,因此如果您添加新标签,ID 为 messages 的标签仍将获得焦点/活动状态。

    【讨论】:

    • 它仍然不适合我。它只选择无序列表中的选项卡,而不选择内部 div。它也改变了我的设计。我将分享我的 html 的其余部分。
    • 是的,我确实必须在没有可用目标元素的情况下做出假设;并得到这个工作。请记住,这是与索引相关的,因此您需要一个“索引”——例如我在更新中添加的内容。请注意,您的 UL 没有像您的选择器中那样名为“tabs”的类
    【解决方案3】:

    我已经找到了解决这个问题的方法。这对我来说非常有效。

    var activeTab = "#messages";

    $('a[href="' + activeTab + '"]').tab('show');

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多