gpt4 book ai didi

javascript - 如何制作 jQuery 对象的副本

转载 作者:行者123 更新时间:2023-11-30 16:47:01 24 4
gpt4 key购买 nike

我想要完成的事情

我正在研究允许用户根据输入更改 svg 文件的东西,例如文本、粗体、斜体等。然后,我希望用户能够恢复到原始模板,而无需再次重新加载文件。

我基本上想要对象的副本。

我尝试过的

// Get template
$.get('../path/to/file.svg', function(svg_template)
{
var svg = svg_template.getElementsByTagName('svg')[0];

// Alter template
$('#bold').click( function() {
svg.text.attr('font-weight', 'bold');
});

// Return to original template
$('#reset').click( function() {
var svg = svg_template.getElementsByTagName('svg')[0];
});

}, 'xml');

我已经尝试过很多变体。

var svg = svg_template.getElementsByTagName('svg')[0];
var svgcopy = svg_template.getElementsByTagName('svg')[0];

// ...

$('#reset').click( function() {
svg = svg = svg_copy;
});

我还阅读了 jQuery 中名为 extend() 的东西,但我收到“非法调用”

var svg = svg_template.getElementsByTagName('svg')[0];
var svg_copy = jQuery.extend(true, {}, svg);

// ...

$('#reset').click( function() {
svg = svg = svg_copy;
});

我也看过 clone(),但是这需要它的副本存在于 DOM 中,这要慢得多,需要我隐藏对象,然后从Dom,当我需要它时,甚至仍然,我如何选择它而不制作它的另一个克隆,因为放置一个等于克隆的变量会使我处于我开始时的相同位置。

只有我能找到的相关问题没有答案。

Storing static copies of jQuery objects

我得到的行为

不是副本,每次我使一个变量等于该对象时,它充当指向它的指针,该对象的代表,并且对一个对象的任何更改都会影响也等于该对象的其他变量.

我的问题

如何制作 jQuery 对象的副本?

最佳答案

如果您只是想将数据保存在元素中,我建议使用 var svg = $('svg'); 选择 svg,然后使用 var svg_save = svg.html(); 将所有 innerHTML 作为字符串获取。然后您可以使用 svg.html(svg_save); 进行重置。希望对您有所帮助!

关于javascript - 如何制作 jQuery 对象的副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31081675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com