如何使用 jQuery mobile 更改类并将其保留在导航菜单中

问题描述

我花了大约整个下午的时间来解决这个问题(我使用 jQuery mobile 1.4.5)。

我在页脚动态创建了一个菜单,这样:

$(document).on("pagebeforecreate",function(event) {

    var $maPage = $(event.target);
        var html    = '<div data-role="navbar">'
                + '<ul id="menu">'
                + '<li><a href="#home" data-rel="location" data-icon="location" data-transition="slide"></a></li>'
                + '<li><a href="#graph" data-rel="graph" data-icon="bars" data-transition="slide"></a></li>'
                + '<li><a href="#alarm" data-rel="alert" data-icon="alert" data-transition="slide" id="link-alarm" class="green"></a></li>'
        + '<li><a href="#preferences" data-rel="preferences" data-icon="gear" data-role="button" data-transition="slide"></a></li>'
                + '<li><a href="#info" data-rel="info" data-icon="info" data-transition="slide"></a></li>'
                 + '</ul>'
                + '</div>';
    
    // On transforme mon HTML brut en objet jQuery pour le manipuler facillemrnt
    var $navBar = $(html);
    // On recupère l'Id de la page en cours
    var idPage = $maPage.attr('id');
    
    // On recupère le bouton qui corresponf a l'id de la page en cours,pour lui ajouter les classes ui-btn-active et ui-state-persist
    //$navBar.find('a[href="#' + idPage + '"]').addClass('ui-btn-active ui-state-persist');
    
    $maPage.find('div[data-role="footer"]').html($navBar);
});

在报警链接上,是一个绿色类,在没有报警时添加绿色背景。

我创建了一个临时函数来更改类。它查看一个 localStorage 变量,该变量在没有警报时为 0,并且数量会根据警报数量增加

function checkRed() {
   /*
    * Journal
    */
    
    ls_journal = JSON.parse(window.localStorage.getItem('journal'));
    //alert(ls_journal.length);

    if(ls_journal.length > 0) {
        //alert('add red');
        $('#link-alarm').removeClass('green').addClass("red");
    }
    else
    {
        //alert('add green');
       $('#link-alarm').removeClass('red').addClass('green');
    }
}

在主页上,有带有站点定位的地图。一个 MysqL 请求是请求站的状态,当温度过低时,报警响,报警链接背景必须为红色。

只要我在主页上就可以正常工作,但是当我移动到另一个页面时,不会发生转换。我的意思是警报链接背景保持绿色,类为绿色。

有时是红色的,但大部分时间是绿色的。

我相信我的问题可能与处理程序有关,但我尝试在不同的处理程序上调用 checkRed() 函数

$(document).on( "pagecontainertransition",function( event,data ) {
        checkRed();
        //$('#menu').listview(); // That do not work well
});

$(document).on( "pageshow",data ) {
        checkRed();
        //$('#menu').listview(); // That do not work well
});

$(document).on( "pagecontainertshow",data ) {
        checkRed();
        //$('#menu').listview(); // That do not work well
});

我的目标非常简单,但我遇到了很多问题,无法让它发挥作用,非常感谢您的帮助

ls_journal = JSON.parse(window.localStorage.getItem('journal'));

当 ls_journal 大于 0 时,警报背景链接必须始终为绿色,来自转换后的所有页面(pagebeforecreate、pageshow 等)。

当 id 等于 0 时,背景必须是绿色的。

我真的想知道,是否有办法在某个时间点刷新导航? 我试过没有成功

$('#menu').listview()
$('#menu').listview('refresh');

非常感谢您的帮助

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)