如何使用jQuery复制元素的数据?

这个问题在这里已经有了答案:

  • 在JavaScript中深入克隆对象的最有效方法是什么? 57个答案

  • 要真正只复制数据,*这非常简单:

    $(destination).data( $(source).data() );
    

    这是因为使用.data()没有参数将返回所有数据片段的键值对象,反之亦然,您也可以使用键值对象一次更新多个片段数据。


    更新2017年5月25日

    在没有jQuery的JavaScript中,一个聪明的选择似乎是:

    Object.assign(destination.dataset, source.dataset);
    

    回答:

    a)迭代数据项

    $.each(element.data(), function (name, value) {
        // ... do something
    })
    

    如果element是一个DOM元素,使用这个:

    $.each($.data(element), function (name, value) {
        // ... do something
    })
    

    为了给出另一个替代方案,即不是克隆整个对象,可以将数据对象复制到包含名称/值对的新数组中:

    
    function getOriginalElementData(domElementJQueryObject){
        var originalElementData = new Array();
        $.each(domElementJQueryObject.data(),function(name,value) {
           originalElementData.push({"name":name,"value":value});
        });
    
        return originalElementData;
    }
    

    要将数据恢复到另一个对象:

    
    function restoreOriginalElementData(domElementJQueryObject,originalElementData){
        for(var i=0;i<originalElementData.length;i++){
            domElementJQueryObject.data(originalElementData[i].name,originalElementData[i].value);
        }
    }
    

    通过数据项迭代的部分是从这个答案中复制的:jQuery循环通过data()对象

    链接地址: http://www.djcxy.com/p/6941.html

    上一篇: How do I copy the data of an element with jQuery?

    下一篇: dimensional array, not reference