本质上:
每次克隆项目时,都会丢失这些项目的data()值。
长篇故事:
我有一个三列表,它存储从JSON对象动态输入的项目。每个项目都有一个我使用的数据值集。
$.getJSON(jsonUrl, null, function(data) {
jsonData = data.items;
for (var key in jsonData) {
lZeroArray.each(function() {
if ($.trim($(this).text()) == $.trim(jsonData[key].name)) {
$(this).data("L1", jsonData[key].L1);
}
});
};
});
在这些项上有一个click事件,它使用存储为“l1”键的JSON数据,这些工作正常,但是……
我允许使用文本框和“:not(:contains('text'))”选择器筛选这些项目。
$(".subMenuItem:not(:contains('" + str + "'))").remove();
但是…因为我有三列,列可能是不均匀的,所以我试图通过克隆其余的列来将项目转换为三列。
var items = $(".subMenuItem").clone(true);
$("#subMenuContent td").empty();
addItemsToColumn(items);
完成此操作后,click函数将不再查找任何data()值,即使它们以前已经工作过。
$(".subMenuItem").live("click", function() {
if ($(this).data("L1")) {
buildSubMenuItems($(this).data("L1"));
}
});
如何保留与项一起存储的data()值?