创建元素时,用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");
没看到你第一段和第二段什么关系。。如使用html更新容器元素会导致你原来的li元素被移除dom元素,你再获取新元素肯定没有data换成的内容了。
那你在浏览器的开发者模式下,看下页面元素信息是不是真的不存在呢?可能是你的js语法错误。