说我有<p>
这样:
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, <span></span>sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam</p>
是否可以在<span>
之后删除/删除文字?
结果将是:
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, </p>
答案 0 :(得分:2)
您正在寻找类似的内容:http://jsfiddle.net/zc464way/
$('p').each( function( index, element ) {
var content = $(element).html();
$(element).html( content.substring(0, content.indexOf('<span') - 1 ) );
} );
如果你只需要生成一个元素,你也可以稍微减少一点,如下所示:
var content = $('p').html();
$('p').html( content.substring(0, content.indexOf('<span') - 1 ) );
但第一个示例允许您一次截断多个段落元素。
注意:我搜索'<span'
而不是'<span></span>'
只是为了允许更多的灵活性,以防您要截断任何span元素上的文本;但是,您可以通过搜索'<span></span>'
而将其更改为仅截断空的span元素。
答案 1 :(得分:2)
您可以在范围上拆分段落html的内容并返回第一个匹配。
$('p').replaceWith(function () {
return $('p').html().split('<span></span>')[0]
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, <span></span>sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam</p>
答案 2 :(得分:0)
您可以获取span
元素并继续迭代nextSibling
以获取其以下的兄弟节点。然后,检查这些节点的类型是否为3
(即文本节点),并将其删除。
$('p').each(function(index, element) {
var span = $(element).children('span').get(0);
if(!span) return;
var node, next = span.nextSibling;
while(node = next) {
next = node.nextSibling;
if(node.nodeType == 3) element.removeChild(node);
}
});
$('p').each( function(index, element) {
var span = $(element).children('span').get(0),
node, next = span.nextSibling;
while(node = next) {
next = node.nextSibling;
if(node.nodeType == 3) element.removeChild(node);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit,
<span></span>
sed do eiusmodtempor incididunt ut labore et dolore magna aliqua.
</p>