2 zhanghaor zhanghaor 于 2016.09.25 13:25 提问

jQuery 用html方法修改元素内容后,重新选中元素data原本藏值无法找到

创建元素时,用data方法藏值

                            var book = books[i];
                            var li_str = getNoteBookLiStr(book.cn_notebook_name);
                            var $li = $(li_str);
                            //将bookId藏在li中
                            $li.data("bookId",book.cn_notebook_id);
                            $("#book_list").append($li);

用html方法修改元素内容

                            var li_str = '<li class="online"><a>'+
                                    '<i class="fa fa-book" title="online" rel="tooltip-bottom">'+
                                    '</i>'+newName+'</a></li>';
                            $checked_li.html(li_str)

重新选中后再调用data发现藏值找不到了undefined

            var noteBookId = $("#book_list li a.checked").parent().data("bookId");

2个回答

showbo
showbo   Ds   Rxr 2016.09.25 17:16
已采纳

没看到你第一段和第二段什么关系。。如使用html更新容器元素会导致你原来的li元素被移除dom元素,你再获取新元素肯定没有data换成的内容了。

zhanghaor
zhanghaor 我也发现我的问题,html应该是更新li元素下的内容,不应该再包含<li>标签,导致再次用选择器选择时选中的是新添加的li元素,所以原来的内容就找不到了。多谢!
大约一年之前 回复
wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.09.25 14:58

那你在浏览器的开发者模式下,看下页面元素信息是不是真的不存在呢?可能是你的js语法错误。

zhanghaor
zhanghaor 回复毕小宝: 页面可以显示出元素发生变化,直接调用上次选择器选中元素的data也能访问到数据,但是如果用选择器重新选择一次,就发现原有的data变成了undefined
大约一年之前 回复
wojiushiwo945you
wojiushiwo945you 回复张浩BIT: 那你修改之后,页面的DOM资源管理器显示的真实元素情况是什么样的呢?
大约一年之前 回复
zhanghaor
zhanghaor 我在浏览器的console上用js进行同样的操作(data绑定数据,html修改元素,重新选中元素,调用data查找绑定数据)发现返回的也是undefined,如果不修改元素是可以data找到绑定数据的
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!