添加动态弹出窗口和增强内容

时间:2012-11-08 17:25:20

标签: jquery-mobile

我正在尝试动态地向我的页面添加一个弹出窗口,其中有很好的JQM内容(按钮等)。弹出窗口已添加,但未应用任何样式。

这是代码(它不是很长,所以我在这里复制了):

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
    <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>  </head>
  <body>
    <div id='page' data-role='page'>

      <div data-role='header'>
        <h1> Header </h1>
      </div>

      <div data-role='content'>
        <p>Code sample</p>
        <a id='add' data-role='button'> Add popup </a>
        <a href='#popup' data-role='button' data-rel='popup'> Show dynamic popup </a>
        <a href='#popup2' data-role='button' data-rel='popup'> Show static popup </a>

      </div>
      <div id="popup2" data-role='popup'>
        <div data-role="header"> 
          <h1>Popup Header</h1> 
        </div>
        <div data-role="content"> 
          <p>Some content</p> 
        </div>
      </div>

    </div>
    <script>
      $(document).ready( function(){
        $('#add').bind( 'click', function(ev){
          var
            page = $('#page');
          var 
              popup = $('<div id="popup" data-role="popup"></div>').appendTo( page )
            , header = $('<div data-role="header"> <h1>Popup Header</h1> </div>').appendTo( popup )
            , content = $('<div data-role="content"> <p>Some content</p> </div>').appendTo( popup );
          popup.popup();
        });
      });
    </script>
  </body>
</html>

有一个JsBin版本,可以使用它。

因此,如果我点击显示静态弹出窗口,它会很好地显示标题,但如果我点击添加弹出式广告,则显示此新添加的弹出窗口显示动态弹出窗口弹出窗口的内容看起来不一样。(使用chrome)

所以问题是:如何增强动态添加的弹出内容?

2 个答案:

答案 0 :(得分:6)

我找到了解决方案,您可以将弹出窗口插入与内容相同的级别,例如

<div data-role="page" >
  <div data-role="content" ></div>
  <div data-role="popup"></div>
</div>

这样弹出功能很好,但是当您从ajax请求中插入代码时,您必须在页面中插入弹出窗口并调用组件的方法弹出窗口。

ajax调用中的ex .js文件(响应只是弹出的代码):

$('#page').append(response).trigger('create');

$("#popup").popup();

请记住,当您在主页面中声明一些弹出窗口时,它与内容的级别不同。 JQM自动将弹出窗口放在这个位置,它不会产生问题。

答案 1 :(得分:1)

您必须重新绘制动态添加的内容。为此,请在page.page('destroy').page();之后添加popup.popup();

工作示例:http://jsbin.com/orehuv/3/