1

我有一种情况,我需要记住在进行更改之前 tagsinput 字段的值是什么。但是,某些信息是动态绑定的,因此当输入更改时,引用它的变量的值也会更改。

var topics = $("#topics").tagsinput('items');
$('#topics').tagsinput('add', 'A');
$('#topics').tagsinput('add', 'B');

var LISA = topics;
alert('Lisa is: ' + JSON.stringify(LISA));
$('#topics').tagsinput('add', 'newone');
alert('Lisa is: ' + JSON.stringify(LISA));

所以我想要的是没有添加到它 Lisa的变量。newone

但是使用引导标签输入 jQuery 插件,变量会随着值动态变化。任何人都知道如何关闭此绑定,以便我可以回忆在添加新信息之前该字段的值是什么?

4

1 回答 1

1

问题

这与引导标签本身无关。它是 JavaScript 创建变量方式的副产品。例如,考虑以下 JavaScript:

var array = ["A", "B"];
var copy = array; 

array.push("C");
copy.push("D");

console.log(array);
console.log(copy);

两者arraycopy等于["A", "B", "C", "D"]

该对象copy只包含一个返回的引用,array因此它们都解析为同一个对象。更新一个更新两个。另请参阅:数组的值更改原始数组

解决方案

你想要做的是在 javascript 中克隆一个对象,如下所示:

var LISA = JSON.parse(JSON.stringify(topics));

现在更改LISA 时不会更新topics

小提琴中的演示(打开控制台)

于 2014-07-24T17:31:36.260 回答