【问题标题】:Twitter bootstrap tabs "tab" method not working after ajax loading of some page contentTwitter引导选项卡“选项卡”方法在ajax加载某些页面内容后不起作用
【发布时间】:2013-02-04 13:40:14
【问题描述】:

我在工作中使用 twitter 引导程序。 “标签”方法 (即$("a element under tab li").tab("show"))完美地切换到jQuery 选择器指定的新选项卡,直到完成ajax 加载。当我使用jQuery append 创建一个新选项卡时,通过jQuery load 加载其窗格内容并尝试使用 tab("show") 切换到该新选项卡它给出错误元素没有方法tab

更新

    <div class="tabbable">
      <ul class="nav nav-tabs" id="tab-set">
        <li class="active"><a data-toggle="tab" href="#tab1"> tab 1</a></li>
        <li><a data-toggle="tab" href="#tab2">tab 2</a></li>
        <li><a data-toggle="tab" href="#tab3">tab 3</a></li>
        <li><a data-toggle="tab" class="ajax" href="test.html">tab 4 - ajax</a></li>
      </ul>
      <div class="tab-content" id="tab-content">
        <div id="tab1" class="tab-pane active"> tab 1 content </div>
        <div id="tab2" class="tab-pane"> tab 2 content </div>
        <div id="tab3" class="tab-pane"> tab 3 content </div>
      </div>
    </div>

这是通过 ajax 添加新标签的 javascript 代码

$("#tab-set").append("<li id='"+tabType+"'><a href='#" + tabType +
       "-pane' data-toggle=\"tab\"> " + tabName + "</a></li>");

$("#tab-content").append("<div class=\"tab-pane\" id=\"" +tabType + "-pane\"></div>");
$("#" + tabType + "-pane").load(tabUrl);

添加新标签后,我尝试使用切换到该标签

$("#" + tabType + " a").last().tab("show");

但这不起作用。

【问题讨论】:

    标签: ajax jquery twitter-bootstrap tabs


    【解决方案1】:

    在这一行:

    $("#tab-content").append("<div class=\"tab-pane\" id=\"" +tabType + "-pane\"></div>");
    

    你有#tab-content,但你的div实际上有一个tab-content类,而不是一个id。所以它必须是:

    $(".tab-content").append("<div class=\"tab-pane\" id=\"" +tabType + "-pane\"></div>");
    

    我通过为 tabType、tabName 和 tabUrl 创建变量来测试您的代码,我上面提到的那个微小的变化对我来说很有效。但我无法得到与你相同的错误(元素没有方法选项卡),所以如果这仍然对你不起作用,那么还有其他事情发生,你需要发布更多代码。

    【讨论】:

    • 对不起,我有 id 'tab-content',我在上面的示例中错过了它,我已经更新了代码
    • 我自己找到了问题和解决方案,无论如何感谢您的尝试,赞成你的回答,希望你做我的;)
    【解决方案2】:

    是的,我现在遇到了麻烦。

    我正在使用$("#" + tabType + "-pane").load(tabUrl); na 加载一个页面,该页面还有 html、head、body 元素,并且它还在其中加载 jquery。这就产生了问题。它与给定here的问题有关

    现在我更改了加载页面的内容,它只加载所需的基本内部元素,没有 html、head、script、body 等标签。

    这让我头疼了一整天。感谢上帝,我终于修好了。

    编辑

    甚至不需要删除所有元素。只需要注意不要从该加载页面再次加载 jquery(通过 $("#" + tabType + "-pane").load(tabUrl); 加载)。

    【讨论】:

    • 酷,很高兴你修好了它。赞成解决方案,似乎它可以帮助有相同错误消息的人。
    • @frostyterrier : 谢谢你,很高兴认识你,希望我以后也能得到你的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    相关资源
    最近更新 更多