jQuery replaceWith()-重新使用删除的值

jQuery replaceWith()-重新使用删除的值,jquery,arrays,href,replacewith,Jquery,Arrays,Href,Replacewith,我使用jQuery为键盘用户消除紧密相连的相同链接的重复。我仍然希望鼠标用户能够点击“更多”链接,如果他们愿意的话,所以我把链接放回悬停状态 我所做的一切都在起作用,但这似乎有点像在胡说八道。我在文件中读到,replaceWith返回被替换的值,但它将它们保存在哪里?需要时我怎样才能取回它们 我知道原始值进入某种数组。看起来应该可以在第一个函数中创建命名数组,然后在第二个函数中访问其正确的值。我对阵列非常不熟悉&欢迎任何帮助 jQueryfunction${ //删除帖子列表小部件中的重复链接

我使用jQuery为键盘用户消除紧密相连的相同链接的重复。我仍然希望鼠标用户能够点击“更多”链接,如果他们愿意的话,所以我把链接放回悬停状态

我所做的一切都在起作用,但这似乎有点像在胡说八道。我在文件中读到,replaceWith返回被替换的值,但它将它们保存在哪里?需要时我怎样才能取回它们

我知道原始值进入某种数组。看起来应该可以在第一个函数中创建命名数组,然后在第二个函数中访问其正确的值。我对阵列非常不熟悉&欢迎任何帮助

jQueryfunction${ //删除帖子列表小部件中的重复链接 $.widget li.eachfunction i{ var firstA=$this.children'a:firstchild'; var myH=$firstA.attr'href'; var dupeA=$firstA.兄弟姐妹'a'; var dupeH=$dupeA.attr'href'; 如果dupeH==myH{ $dupeA。替换为“打开”; } }; //如有必要,更换连杆 $'.widget li'.hover函数i{ var myH=$this.children'a:first child'.attr'href'; $this.children'span.more link'.replaceWith.addClass'hover'; }; }; 保险商实验室{ 列表样式类型:无; } 李,李>*{ 浮动:左; 清除:左; 显示:块; } 李{ 垫底:1米; } 李a:第一个孩子~*{ 左:1米; } .更多链接{ 边框:1px纯红; 填充:.3em; } 2018年5月14日 回答问题 2018年5月15日 提示问题
您只需要获取replaceWith函数的返回值,以便以后可以重用它

例如:

var replaced = $( dupeA ).replaceWith( '<span class="more-link">Open</span>' );
把dopeA放回去

您将了解变量的范围,以便能够在需要的地方使用替换的变量。在您的示例中,您需要替换定义为全局变量或在绑定两个事件函数的范围内定义的主执行函数

可以找到有关replaceWith函数的更多信息

希望有帮助

编辑 我已将该函数应用于您的案例,但有一些小的改进

jQueryfunction${ $'.widget li'。每个函数i,e{ var firstA=$this.children'a:firstchild'; var myH=$firstA.attr'href'; var dupeA=$firstA.a'; var dupeH=$dupeA.attr'href'; var replaced=false;//设置一个变量以检查项目是否已被替换 var repA;//存储了替换的项 ifdupeH==myH{ //替换该项并将该项存储在变量中 repA=$dupeA.replaceWith$'Open[replaced]; //仅当替换时,才会设置mouseneter事件 $e.mouseenterfunction{ //如果元件尚未更换 如果替换===false{ //将元素设置为已替换 替换=真; //将更换的元件放回原位 $this.children'span.more link'.replaceWithrepA.addClass'hover'; } }; } }; }; 保险商实验室{ 列表样式类型:无; } 李,李>*{ 浮动:左; 清除:左; 显示:块; } 李{ 垫底:1米; } 李a:第一个孩子~*{ 左:1米; } .更多链接{ 边框:1px纯红; 填充:.3em; } 2018年5月14日 回答问题 2018年5月15日 提示问题
请通过单击带括号的按钮在a中添加HTML:并将源代码放在那里。完成。谢谢你的提示,不客气。第二部分是注释:///如果需要,替换链接如何确定?鼠标用户不介意重复链接,所以我只希望链接回到悬停状态。我明白了。你可能想重新评估你的战略。回答这些问题不一定要在这里作为评论,但如果你愿意的话,你可以自己回答:这些额外的链接是否能让用户体验更好?重复链接是否具有原始链接无法实现的功能?好的用户体验在界面之间具有尽可能接近的一致性行为,比如绑定键盘事件和鼠标事件。这是一个。谢谢,但它没有。我一定是疯了。我能看到的恢复原始值的唯一方法是在函数中放入一个“for”循环,将找到的每个值存储起来。这感觉比我们拥有的更复杂!从api页面的措辞来看,似乎已经创建了一些神秘的“替换”存储。我想我可以用它来恢复这些值,而不是发送更多的代码。给我几分钟时间,我将写一段关于如何将我的示例应用于您的案例的代码。@cherryaustin我已经更新了我的答案。希望能有帮助。哇,太棒了!我刚刚学到了至少两个新东西。干杯
$(this).children( 'span.more-link' ).replaceWith( replaced );