Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery中的数据对象在替换为后未定义_Javascript_Jquery_Undefined_Replacewith - Fatal编程技术网

Javascript jquery中的数据对象在替换为后未定义

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

我正在编写一个jquery插件,我需要一些按钮来实现双重状态(比如编辑/保存) 我通过JSON获取此信息,并将其插入按钮中,如下所示:

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文件。