Jquery 动态加载数据问题

二、动态生成ListView问题

 


这个问题花了整整一天的时间才解决了。之前老是出现各种奇怪的错误,典型如:

Uncaught cannot call methods on listview prior to initialization; attempted to call method 'refresh'

 

我的listview的容器ul完全是动态生成的。动态HTML代码如下:

      <div data-role="page" id="pLogin" data-hash="false">

        <div data-role="header" data-theme="b" data-position="inline">

          <h1>欢迎使用</h1>

        </div>

        <div data-role="content">  

      <div class="content-primary">

        <ul data-role="listview" data-inset="true" id="lv1">

          <li><a href="#">AAAAAAAAAAA<a></li>

          <li><a href="#">BBBBBBBBBBB<a></li>

          <li><a href="#">CCCCCCCCCCC<a></li>

          <li><a href="#">DDDDDDDDDDD<a></li>

        </ul>

      </div>

        </div>

      </div>

调用

$("#lv").listview('refresh');时,出错了:Uncaught cannot call methods on listview prior to initialization; attempted to call method 'refresh'

查了N多资料,终于弄明白了。因为我的page容器也是动态生成的。page数据加载至容器时,jquerymobile并没有对该page容器进行初始化。因此调用 page的content下的listview组件的refresh方法时,会出现异常。

解决方法:

在dom数据加载完成后,重新生成page

        $("#pLogin").page();

        $("#lv").listview('refresh');

问题成功解决。


当a 标签已经动态生成后。怎么去调用a标签的click方法呢?

一定注意动态加载的数据标签只能加载范围内有效。必须将函数紧跟在动态加载元素后面范围内。不能跳出动态加载的函数。否则找不到相应标签。那么标签的事件将无效

$("#cd_list #add").on("vclick",function(){})


可以通过a标签的函数来解决跨函数的问题


query是页面一加载获取页面元素的,你后期加的a标签,是获取不到的。
你可以在$("#table").append("<a href='javascript:;' class='del'>删除</a>")的时候就在内部加上事件,如$("#table").append("<a href='javascript:;' class='del' οnclick='alert("获取到了")'>删除</a>")。
如果调用函数就提前定义好,直接调用就好了

更新2014 - 04-26 

以上a标签动态生成后的事件方法比较笨。找到一种新的解决方案

jquery的on方法其实是集合了bind,live, delegate 在2.0版本都喜欢用on方法

但是动态生成的a标签绑定时候需要绑定到a标签的父元素。不然动态加载的标签不会生效。menu是页面元素, .add 是a标签。这样绑定后。动态生成的标签就不需要重复绑定了

$("#menu").on('click','.add',function(evt)


参考文章
http://www.zfanw.com/blog/jquery-dynamic-insert-element-bind-event.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值