Javascript jquery中的数据对象在替换为后未定义
我正在编写一个jquery插件,我需要一些按钮来实现双重状态(比如编辑/保存) 我通过JSON获取此信息,并将其插入按钮中,如下所示:Javascript jquery中的数据对象在替换为后未定义,javascript,jquery,undefined,replacewith,Javascript,Jquery,Undefined,Replacewith,我正在编写一个jquery插件,我需要一些按钮来实现双重状态(比如编辑/保存) 我通过JSON获取此信息,并将其插入按钮中,如下所示: node - current //['primary'/'secondary'] - primary // some info - secondary // some info 一旦我点击按钮,我就可以在这里更改操作。所以我想通过一个模板和我从button.data获得的信息来替换整个链接。 因为我不仅要替换内部HTML,还要替换外部H
node
- current //['primary'/'secondary']
- primary // some info
- secondary // some info
一旦我点击按钮,我就可以在这里更改操作。所以我想通过一个模板和我从button.data获得的信息来替换整个链接。
因为我不仅要替换内部HTML,还要替换外部HTML,所以必须使用“replaceWith”。然后我将“数据”复制到新按钮,并(理想情况下)删除旧按钮
changeButtonAction : function(button, selector){
var node = button.data('node'),
info;
if(node.current == 'primary'){
info = node.secondary;
node.current = 'secondary';
}else{
info = node.primary;
node.current = 'primary';
}
button.replaceWith(multiReplace(OPERATION_ITEM, info, true));
button.data('node', $.extend( true, {}, node));
... //bit of interaction
}
问题是:一旦退出函数我就失去了新数据,因为它说它是未定义的。
有人能帮忙吗?使用“replaceWith”不是必须的,所以如果你想出另一个解决方案,它就可以了。好的,我解决了它
多亏了二极管,我试着在JSFIDLE中复制它。单击功能也不起作用,所以我稍微修改了代码。而不是用文本替换:
button.replaceWith(multiReplace(OPERATION_ITEM, info, true));
button.data('node', $.extend( true, {}, node));
使用对象执行此操作:
var button2 = $(multiReplace(OPERATION_ITEM, info, true))
.data('node', $.extend( true, {}, node));
button.replaceWith(button2);
您可以看到它的作用:
如果可能,请在中进行演示,以便其他人更好地了解您的问题。不需要复制所有代码,只需复制问题所在的部分。使用左侧的“添加资源”添加其他js文件。