簡體   English   中英

根據復制從對象中刪除jquery對象

[英]Removing jquery objects from an object based on duplication

我正在嘗試從對象中移除對象,如果它們出現在其他對象中。 真難為情! 這是一個例子。 我有2個包含DOM圖像對象的對象,並且我希望將DOM圖像對象從第一個對象中刪除,如果它們出現在第二個對象中。

第一個對象

{
    "241": [{
        "img": image_object_1
    },
    {
        "img": image_object_2
    },
    {
        "img": image_object_3
    },
    {
        "img": image_object_4
    }]
}

第二個對象

{
    "241": [{
        "img": image_object_1
    },
    {
        "img": image_object_3
    },
    {
        "img": image_object_4
    }]
}

對象1的預期結果

{
    "241": [{
        "img": image_object_2
    }]
}

我將所有內容都放在一個這樣的對象中,但是如果需要,我很樂意更改格式

{
    "0": {

    },
    "1": {
        "241.14999389648438": [{
            "img": {
                image_object_1
            },
        },
        {
            "img": {
                image_object_2
            },
        },
        {
            "img": {
                image_object_3
            },
        },
        {
            "img": {
                image_object_4
            },
        }]
    },
    "2": {
        "241.14999389648438": [{
            "img": {
                image_object_2
            },
        },
        {
            "img": {
                image_object_3
            },
        },
        {
            "img": {
                image_object_4
            },
        }]
    }
}

我的工作代碼在這里

jQuery.fn.reverse = [].reverse;

function same_height(){
    var imob = {};
    var groups = [];
    var heights = [];
    var tp = 0;
    var img = false;
    $("#ez-container .row").each(function(gi){
        imob = {};
        groups[gi] = {};
        heights[gi] = {};
        tp = 0;
        img = false;
        $(this).find(".ez-image img").each(function(){
            img = $(this);
            tp = img.offset().top;

            imob = {
                "img":img,
                "padding":img.outerHeight(true) - (parseInt(img.css('borderBottomWidth'))+parseInt(img.css('borderTopWidth'))) - img.innerHeight()
            };
            if(typeof(groups[gi][tp])=="undefined"){
                groups[gi][tp] = [];
                heights[gi][tp] = [];
            }
            groups[gi][tp].push(imob);
            heights[gi][tp].push(img.height());
        });
    });
    heights.reverse();
    var max_group_height = 0;
    $.each(groups.reverse(),function(gix,grp){
        $.each(grp,function(t,im){
            if(im.length>1){
                $.each(im,function(i,v){
                    max_group_height = Math.max.apply(Math, heights[gix][t]);
                    if(typeof(v.img.attr("data-fixed"))=="undefined"){
                        v.img.css({"height":max_group_height+(v.padding)+"px"}).attr("data-height",0).attr("data-width",0).attr("data-fixed",1);
                    }
                });
            }
        });
    });
    do_swap_images();
}

如果檢查dom圖像節點,則需要isSameNode函數。 我不確定您的要求,希望下面的代碼會有所幫助

//suppose a, b are your objects

var key = 241
var diff = a[key].filter( function( v ){
    var firstImgNode = v.img;
    return !b[key].some( function( v ){
        return v.img.isSameNode( firstImgNode  );
    });
});

或者,如果您檢查其他數據類型,則只需執行v.img == firstImgNode

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM