选择一组中不包含另一组属性的元素

时间:2013-11-14 17:50:36

标签: jquery

不完全确定如何标题,但这就是我要做的事情:

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

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

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

1 个答案:

答案 0 :(得分: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);
    }
});