0

不完全确定如何表达标题,但这是我想要做的:

var items = editArea.children();
var previewedItems = previewArea.children();

var unPreviewedItems = items.filter(function () {
    // ??
});

我有一个editArea和一个preview区域。用户将 div 附加到 editArea,每个都具有递增的 ID 和data-scid,等item1item2当单击按钮时,这些 div 将被克隆到预览区域。每个克隆的 ID 都以 为前缀preview_,而data-scids 保持不变。我想获取我尚未克隆的元素列表,基本上类似于unPreviewedItems = items.not(previewedItems). 我该怎么做?

4

1 回答 1

0

preview_使用从名称中删除的键创建所有预览项目的映射(例如,以键作为名称的对象) 。

然后,遍历所有未预览的项目并创建一个新列表,其中列出了在前一个地图中找不到的项目。

// create the already previewed map
var map = {};
previewArea.children().each(function() {
    var id = this.id.replace(/^preview_/, "");
    map[id] = true;
});

var unpreviewed = [];
// iterate through the whole list of items
editArea.children().each(function() {
    if (!map.hasOwnProperty(this.id)) {
        unpreviewed.push(this);
    }
});
于 2013-11-14T17:55:06.900 回答