我正在编写一个jquery插件,我需要一些按钮来实现双重状态(比如编辑/保存) 我通过JSON获取此信息并将其插入按钮中:
node
- current //['primary'/'secondary']
- primary // some info
- secondary // some info
点击按钮后,我会到此处更改操作。所以我想通过模板和从button.data获得的信息替换整个链接。 因为我不仅要替换innerHtml而且要替换外部,我必须使用' 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'并不是必须的,所以如果你想出另一个解决方案就可以了。
答案 0 :(得分:0)
好的,我解决了。
感谢Diode我尝试在jsfiddle中复制它。点击功能既不起作用,所以我稍微更改了我的代码。而不是替换为文本:
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);
你可以看到它的实际效果: http://jsfiddle.net/p8vMR/9/