По сути: каждый раз, когда я клонирую элементы, я теряю значение 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 для этих элементов, которое использует данные JSON, сохраненные как ключ "L1", и они работают нормально, но ...
Я разрешаю фильтровать эти элементы с помощью текстового поля и селектора ": not (: contains ('text'))".
$(".subMenuItem:not(:contains('" + str + "'))").remove();
но ... поскольку у меня три столбца, столбцы могут быть неровными, поэтому я пытаюсь поместить элементы в три столбца путем клонирования оставшихся.
var items = $(".subMenuItem").clone(true);
$("#subMenuContent td").empty();
addItemsToColumn(items);
После этого функции щелчка больше не находят какие-либо значения data (), даже если они работали раньше.
$(".subMenuItem").live("click", function() {
if ($(this).data("L1")) {
buildSubMenuItems($(this).data("L1"));
}
});
Как сохранить значения data (), которые я храню вместе с элементом?