如何通过jquery mobile获取动态添加dom的jquery

时间:2011-12-09 07:14:33

标签: jquery jquery-mobile cordova

我在jquery移动应用程序中有一个函数,它通过post获取数据并填充列表视图。喜欢这个

 function updateSomething(data){
            var list =  $('#list');

            $.each(data.comments, function(key, comment) { 

                var item = '<li data-theme="c"> <a data-icon="arrow-r" class="test" href="# id="'+comment.id+'"><h3>'+comment.data+'</h3></a></li>';

                //update the current dom with list items
                list.append(item);
            });

            list.listview('refresh');   
        }

有没有办法让jquery刷新dom或者动态更新后的东西?

这应该通过以下javascript来获取,但它不是

<script type='text/javascript'>
 $("#comment_page").live('pageinit', function() {
             $('.test').click(function() {

                 alert('test click');
             });
       });

</script>

html

 //comment page
<div data-role="page" id="comment_page" data-theme="c">
        <div data-role="content"> 
            <ul data-role="listview" id="list" data-theme="b"></ul> 
        </div> 
    </div>

  //another page
  <div data-role="page" id="login_page" data-theme="b">

        <div data-role="header">
            <h1>Login</h1>
        </div><!-- /header -->

        <div data-role="content">


            <div id="response"></div>

            <div data-role="fieldcontain" class="ui-hide-label">
                <label for="email">Email:</label>
                <input type="text" name="email" id="email" value="" placeholder="Email"/>
            </div>

            <div data-role="fieldcontain" class="ui-hide-label">
                <label for="password">password:</label>
                <input type="password" name="password" id="password" value="" placeholder="Password"/>
            </div>

            <input type="submit" name="login_button" id="login_button" value="Login"/>


        </div><!-- /content -->


    </div><!-- /page -->

1 个答案:

答案 0 :(得分:1)

尝试将.click更改为.live(“click”,function(){//代码

另一个选项是在已经存在且没有被jQuery添加的dom元素上使用委托方法

<script type='text/javascript'>
 $("#comment_page").live('pageinit', function() {
         $('.test').live("click",function() {

             alert('test click');
         });
   });

</script>