【问题标题】:How to update navbar after reassigning new tab?重新分配新标签后如何更新导航栏?
【发布时间】:2017-05-07 17:32:37
【问题描述】:

我想即时更改目标标签

$('#tab0').attr('href', '#four');
$('#tab0').text('Logout');

HTML

<div data-role="page" id="settingsPage">
    <div data-role="content">
        <div data-role="tabs" id="tabs">
            <div data-role="navbar">
                <ul>
                    <li><a id="tab0" href="#one" class="ui-btn-active">Tab One</a></li>
                    <li><a id="tab1" href="#two">Tab Two</a></li>
                    <li><a id="tab2" href="#three">Tab Three</a></li>
                </ul>
            </div>
            <div id="one" style="display: none" class="ui-body-d ui-content">aaaaaaaaaaaa</div>
            <div id="two" style="display: none" class="ui-body-d ui-content">bbbbbbbbbbbbb</div>
            <div id="three" style="display: none" class="ui-body-d ui-content">cccccccccccc</div>
            <div id="four" style="display: none" class="ui-body-d ui-content">Not supposed to show this now</div>
        </div>
    </div>
</div>

我希望第一个选项卡可以更改导航栏项目和选项卡的内容。

DEMO

如您所见,第一个导航栏项目名称确实在改变,但内容没有。如何在不重新加载整个页面的情况下刷新?

【问题讨论】:

  • 所以您希望#foursetTimeout 之后显示“现在不应该显示”?
  • 是的,抱歉打错了,在演示中是#four。

标签: javascript jquery jquery-mobile


【解决方案1】:

移动标签使用与 jQuery UI tabs 相同的 API。

可以做这样的事情:

$('#tab0').attr('href', '#four').text('Logout');

$('#tabs').tabs("refresh");
$('#one').hide();

DEMO

【讨论】:

  • 这行得通,但remove 会让人头疼,因为我需要再次添加它。背后的想法是拥有多个选项卡,然后动态地重新分配给每个选项卡并刷新导航栏。
  • 所以把它改成hide()而不是remove()
  • 但我想知道为什么 $('#tabs').trigger('create')$('#tabs').trigger('refresh') 不起作用...即使在页面上它们也不起作用。
  • 还需要隐藏。如果不跟踪要隐藏和取消隐藏的内容,就无法重建选项卡,仅基于 href。
  • 当然...因为您拥有的内容比标签本身的内容要多。如果有帮助,可以稍微调整一下以使用一个选择器字符串来执行这两项操作...获取当前的href并使用它来匹配要隐藏的id。或者全部隐藏然后刷新
【解决方案2】:

假设你想回到零标签,这里是快速而肮脏的

setTimeout(function(){

    $('#tab0').attr('href', '#four');
    $('#tab0').text('Logout');

    // some update should happen here to 
    $('#tab0').trigger("click");

}, 9000);

【讨论】:

  • 其实可能不行,因为我替换tab的代码位于click事件中,所以会出现死循环...
  • 它确实可以正常工作。我在你的 jsfiddle 中运行它。请注意,没有特别的原因,我将其更改为 9 秒。
  • 除非我错过了什么,超时后它仍然显示内容“aaaaaa...”。 jsfiddle.net/v7z6fj05/20
  • 要更改的代码是$('#tab0').attr('href', '#four'),它现在指向不同的标签内容。
  • 那行不通。在幕后,创建了一个选项卡对象,路径已经创建。之后更改链接将不起作用。尝试同时制作所有四个选项卡,但将其中一个标记为非活动状态。然后你可以让它在“注销”时激活
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-21
  • 1970-01-01
相关资源
最近更新 更多