2012-03-29 77 views
1

目标:我试图刷新div内的内容,以便如果用户登录,页面会动态更改。如何使用jquery mobile将php文件中的内容附加到div中

进度:我的第一次尝试是使用$("#tab_b").load("php/tabs.php #tab_b");,但这没有更新DOM,所以jquery样式没有得到应用。然后我尝试添加.trigger('create')函数$("#tab_b").trigger('create');这只导致风格闪烁几秒钟。然后我尝试了.append()函数,它似乎工作,我用下面的代码来测试功能和工作原理:

$("#tab_b").html(''); 
$("#tab_b").append("<button type='submit' data-theme='a'>Test button</button>").trigger('create'); 

我被取出由php文件内容的唯一问题,然后将其附加到div。

内容应刷新: “#tab_b”

<div id="tab_b" class="content_div">  
    <?php 

    if(!isLoggedIn()) 
    { 
     ... 
    } 
    else 
    { 
     echo(" 
     <button type='submit' data-theme='a' id='logout' >Logout</button> 
     "); 
    } 
    ?> 
</div> 

任何想法是如何做到这一点?也欢迎任何有关改进的建议,我是一名初学者程序员。

这个问题是解决我的其他话题讨论的一个更大的问题的尝试:

jQuery Mobile does not apply styles after dynamically loading content

+0

你什么时候调用触发器('create')方法? – 2012-03-29 12:59:22

+0

我在$(#tab_b).append(..).trigger('create')后面链接它。 – Enrico 2012-03-29 13:16:58

+0

我认为你需要在页面加载后刷新页面,查看Events API:http://jquerymobile.com/demos/1.1.0-rc.1/docs/api/events.html – 2012-03-29 13:34:20

回答

1

这可能工作:

$('#tab_b').live('pageinit',function(event){ 
    alert('This page was just enhanced by jQuery Mobile!'); 
}); 

我将调查事件API

+0

感谢您的回答但我不知道这是如何重新加载div的内容?我已经阅读了doc文件,但是我没有从中得到任何明智的答案。你能否提供某种例子?谢谢 – Enrico 2012-03-29 17:43:05

0

我发现你可以用$ .ajax函数获取数据。这将返回整个页面。 我的解决方案是将需要刷新的内容移动到一个新的php页面, tab_b.php并从那里加载。不知道这是否是最好的解决方案,但它的工作原理。

$.ajax({ 
    url: 'php/tab_b.php', 
    success: function (data) { 
      $("#tab_b").html(''); 
      $("#tab_b").append(data).trigger('create'); 
    } 
}); 
相关问题