JavaScript:如何从节点中删除标记?
在前面的一个问题中,有人把我调到了“朗吉”。这很有趣,即使我不完全理解它。我不是一个JavaScript的人。然而,除了1之外,我已经设法用它做了我所需要的大部分事情。这个概念是一个非常基本的RTE,只是粗体,斜体等。我管理了它,创建了一个链接-也这样做了,好的,可能需要一个JS家伙2分钟的时间已经花了我好几个小时了-令人沮丧,但我想我正在学习一点-非常缓慢。无论如何,使用rangy我可以创建一个href链接(请原谅代码太差),如下所示:JavaScript:如何从节点中删除标记?,javascript,jquery,nodes,removechild,Javascript,Jquery,Nodes,Removechild,在前面的一个问题中,有人把我调到了“朗吉”。这很有趣,即使我不完全理解它。我不是一个JavaScript的人。然而,除了1之外,我已经设法用它做了我所需要的大部分事情。这个概念是一个非常基本的RTE,只是粗体,斜体等。我管理了它,创建了一个链接-也这样做了,好的,可能需要一个JS家伙2分钟的时间已经花了我好几个小时了-令人沮丧,但我想我正在学习一点-非常缓慢。无论如何,使用rangy我可以创建一个href链接(请原谅代码太差),如下所示: $('#linkbut').live('click',f
$('#linkbut').live('click',function(){
var sel = rangy.getSelection();
var range = sel.getRangeAt(0);
range.splitBoundaries();
var textNodes = range.getNodes([3]);
for (var i = 0, len = textNodes.length; i < len; ++i) {
var newLink = document.createElement('a');
newLink.setAttribute('href','test.html');
var linkText = document.createTextNode(sel);
var parent = textNodes[i].parentNode;
parent.insertBefore(newLink,textNodes[i]);
newLink.appendChild(linkText);
range.deleteContents();
}
});
我真正想做的(可能不可能)是使用一些“通用”函数,从上述节点中删除任何标记元素。我尝试做的是:
sel=rangy.getSelection()代码>
var txt=sel.toString()代码>
a
元素range.deleteContents()代码>
然后
希望一切都很清楚——因为这对我来说不是 您可能应该查看如何在jQuery中进行嵌套选择,正如Nexexeus所说,您应该查看如何通过所选方法上的.html()删除内容 如果您有:
<div id="mydiv"></div>
您可以通过执行以下操作将其删除:
$('#mydiv').html('');
我知道一个老问题,但我有同样的问题,并找到了可行的解决办法 编辑:normalize()方法很重要,这样就不会有一堆相邻的文本节点。它使所有文本节点再次聚合为一个文本节点
对于您的确切问题,您可以迭代所有节点,然后执行上述代码。为什么不执行element.html(“”)?还是我不明白你的问题?@nexexeus-现在你把我完全弄糊涂了:)我甚至不知道怎么做,但问题是一篇文章中可能有很多链接,但我只想删除选中的linkJQuery-这在某种程度上很好,问题是它要么是“prepend”要么是“append”我无法让它在光标处“插入”这样做-因此使用了rangy之类的东西,而且,这不是一个文本区域。这是一个带有#ID的纯“div”,太多/嵌套会在输出时生成非常难看的HTML,因此后端需要清理太多。现在,如果有一种方法可以使用JQ插入光标,我会微笑
$('#mydiv').append('<a href="test.html">Test Link</a>');
<div id="mydiv"><a href="test.html">Test Link</a></div>
$('#mydiv a');
$('#mydiv').html('');
var el = document.getElementsByTagName('span')[0]; // Get the element in question
var pa = el.parentNode;
while(el.firstChild) {
pa.insertBefore(el.firstChild, el);
}
pa.removeChild(el);
pa.normalize();