【问题标题】:jQuery Mobile Refresh Element after AJAXAJAX 之后的 jQuery Mobile 刷新元素
【发布时间】:2014-09-25 04:28:33
【问题描述】:

我正在使用 JQM 1.4.3。我有一个 AJAX 设置 localStorage 键的值,然后更改页面:

login.js

$.ajax({
    url: url,
    type: 'GET',
    dataType: 'json',
    data: 'method=login&username=' + encodeURIComponent(username) + '&token=' + encodeURIComponent(token),
    //async: false,
    //crossDomain: true,
    error: function(XMLHttpRequest, textStatus, errorThrown) {
        console.log(JSON.stringify(XMLHttpRequest));
        console.log(JSON.stringify(textStatus));
        console.log(JSON.stringify(errorThrown));
    },
    success: function( user ){
        console.log(JSON.stringify(user));
        if(user) {
            $('#welcome').remove();
            storage.setItem("uid", user);
            storage.setItem("username", username);
            $('#welcome').trigger("create");
            $.mobile.changePage( "#page_dashboard", { transition: "slideup" });
            console.log(storage.username);
        }
    }
});

index.html

<div data-role="content">
     <h2 align="center" id="welcome">Hello</h2>
</div>

index.js(附加到 index.html)

$( document ).delegate("#page_dashboard", "pageinit", function() {
        $('#welcome').trigger("create");
        $('#welcome').text("Hello " + storage.username);
});

我正在尝试刷新 #page_dashboard 上的文本值以反映新用户。我正在使用 page_init 和 page_beforecreate 并且既不刷新文本。如果我手动刷新页面,文本会更改。如何刷新元素以反映新的 localStorage 值?

【问题讨论】:

  • 如果您使用的是JQM 1.3或更低版本,您需要$.mobile.activePage.trigger("pagecreate")
  • 然后$("#headerID").toolbar()
  • 这不是 jqm 标头...它只是 html 标头标记中页面包装器上的文本。
  • 请使用 html 标记和任何相关数据更新您的问题。
  • 如果只是文本,那么$("#welcome").text("new text")不是.remove()

标签: ajax jquery-mobile refresh


【解决方案1】:
  • "pageinit"DOM 准备就绪时触发。如果你想在 然后只使用一次 pageinit

  • "pagebeforeshow" 在您的页面显示之前触发。你 当您需要在显示之前执行操作时,可以使用此事件, 比如添加 div 或 HTML 结构。 如果您每次都需要它,页面是 访问然后使用 pagebeforeshow

    $( document ).delegate("#page_dashboard", "pagebeforeshow", function() {
       $('#welcome').trigger("create");
       $('#welcome').text("Hello " + storage.username);
    });
    

【讨论】:

  • 我在 login.js 中删除了所有对 #welcome 的引用,只设置了 localStorage,然后在 pagebeforeshow 中执行了上述操作。谢谢!
猜你喜欢
  • 2012-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-18
  • 2012-05-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多