Javascript 移动关闭</a>;标记到包含元素的末尾
我正试图获得一个链接来包装一个div中的所有文本。我只能找到将某些DOM元素完全移动或将其他元素移动到一个元素中的解决方案 当前情况:Javascript 移动关闭</a>;标记到包含元素的末尾,javascript,jquery,Javascript,Jquery,我正试图获得一个链接来包装一个div中的所有文本。我只能找到将某些DOM元素完全移动或将其他元素移动到一个元素中的解决方案 当前情况: <div class="text"> <a href="link">text</a> and more text </div> <div class="text"> <a href="link">text and more text</a> </div&g
<div class="text">
<a href="link">text</a> and more text
</div>
<div class="text">
<a href="link">text and more text</a>
</div>
还有更多的文字
理想情况:
<div class="text">
<a href="link">text</a> and more text
</div>
<div class="text">
<a href="link">text and more text</a>
</div>
不幸的是,我无法更改标记,因此,我必须对jQuery做一些事情。您可以首先用class
text
获取div
中的HTML,然后用'
替换结束标记
,最后在替换的字符串中附加一个结束标记
以便得到您想要的结果:
var aHTML=$('.text').html();
aHTML=aHTML.trim()。替换(/,“”)+;
$('.text').html(aHTML)代码>
还有更多的文字
您需要使用将锚点插入其中
$(".text a").append(function(){
return this.nextSibling
});
$(“.text a”).append(函数(){
返回此.nextSibling
});代码>
还有更多的文字
避免直接使用html,最好不要更改或覆盖它。您所需要做的就是获取下一个文本同级节点并附加到上一个a
:
$('.text a')。每个(函数(){
$(this.append)(this.nextSibling)
})
还有更多的文字
HTML/JavaScript不能像那样“移动”结束标记,但可以做的是移动文本。而且,您不需要jQuery来完成这项工作;使用香草JavaScript非常容易:
let link=document.querySelector('.text a')
让text afterlink=link.nextSibling
link.appendChild(textAfterLink)
还有更多的文字
这里有一种方法,可以在类为的元素中查找所有未压缩的文本。text
并将所有这些文本附加到第一个方法中,该方法使用addequated条件链接a以删除子文本,同时将它们附加到和更多文本中
迎着朝阳微笑
三只小鸟
在我的门阶旁
别碰这个
唱着甜美的歌
纯真的旋律
这是我给你的信息
说,什么都不用担心
因为每件小事
会没事的
关闭,但最好不要覆盖innerHTML
。当赋值语句与返回无关时,为什么要将它放在返回
行中,后跟逗号和实际返回值?如果你问我的话,这是一种糟糕且令人困惑的风格。@PeterB由于逗号运算符,他正在返回h+text
。但您是对的,使用逗号将两行代码拆分为一行不是一种好的样式。因为您直接修改innerHTML
/.html()
,这将断开现有内容上的任何事件侦听器,并使对现有内容的任何引用无效。这样做可能会破坏页面中的功能和/或导致其他JavaScript失败和/或产生异常。除非您知道修改innerHTML
/.html()
是可以接受的,否则应该尽可能/合理地避免这种情况。您关心
和
之间的空格吗?一个div中有两个
吗?在这种情况下会发生什么?我注意到没有一个答案考虑多个兄弟姐妹,并且唯一建议的修复(<代码>(这个Next SsibIn)< /代码>)将结束嵌套兄弟<代码> <代码>。您是否只希望遵循<代码> <代码>的文本节点被添加到<代码> <代码>?如果还有其他因素,会发生什么?这种情况是否会根据什么类型的元素发生变化(例如,您是否希望对
和
执行不同的操作)?如果其他元素具有默认的单击操作(例如,另一个
),该怎么办?是否要保留移动节点上的任何现有事件侦听器和/或对节点的引用?是否保证a
标记是div
的firstElementChild
?您的目标是修改DOM还是仅仅使整个div
可点击?最重要的是,到目前为止您实际尝试了什么?为了完整性,您需要一个while(node.nextSibling)…
循环。