使用 jQuery 删除周围的双跨度标签。如何解决这个问题?
Remove surrounding double span tags with jQuery. How to solve this?
我对 SPAN 的 jquery selector 和函数的使用感到困惑 - 需要一些帮助:-)
在一大块 HTML-content 中,我想删除 all sorruning SPAN tags defined with a specific class (including the child tag ), 但保持内部span的内容不变(纯文本).
这里是HTML内容的例子:
<div id="SaveInfo">
<p>another content <span class="MyClass green">An expaination: <span>with a span</span></span> and more</p>
<p>another content <span class="MyClass">An explaination: <span>Content in span</span></span> and more content</p>
<!-- But NOT select this one (without .MyClass) -->
<p>another content <span class="green">Content in span</span> and more content</p>
</div>
输出应该是:
(删除了一些特定的周边 SPAN)
<div id="SaveInfo">
<p>another content with a span and more</p>
<p>another content Content in span and more content</p>
<!-- But NOT removed this one (without .MyClass) -->
<p>another content <span class="green">Content in span</span> and more content</p>
</div>
内容在 jquery 循环中,如下所示:
result += 'HTML content from each loop from before';
然后我用这个:
// set the content for further use
jQuery('#SaveInfo').html(result);
// removes instances of .RedClass from SaveInfo
jQuery('#SaveInfo .RedClass').remove();
它会删除不需要的 DIV 及其所有内容,但保留其余部分。这很好用。
现在我需要删除周围的 SPAN,但保留内部 SPAN 中的内容(作为文本)。
模式是这样的:
每个:
<span class="MyClass anotherclass">Info text <span>main content</span></span>
应转换为:
main content
并保留在 HTML 的其余位置。
所以我真正想要的是 select 每个 span.MyClass span
的内容,并在 HTML 内容中各自的位置输出纯文本。
我看过 unwrap()
,但还没有按预期工作。
现在我在 jQuery 1.7.1 环境中工作。
我力所能及,在这里寻求帮助:-)
可以使用replaceWith(function)
。这将遍历所有实例并单独处理它们
$('.MyClass').replaceWith(function(){
return $(this).children().text();
});
按照之前答案的路径:
$('.MyClass').replaceWith(function(){
var text = $(this).children("span").text();
if(text!="") return text;
else $(this).remove();
})
这不会把除了span之外的其他inside children的内容,在这种情况下:
<span class="MyClass">An explaination: <b>Content in span</b></span>
并且将删除没有 span child 的 MyClass span。本案:
<span class="MyClass">An explaination:</span>
https://jsfiddle.net/vov36trq/4/
如果不想删除里面没有 span 的 MyClass span:
$('.MyClass').replaceWith(function(){
return $(this).children("span").text();
})
你知道 MyClass
是否只存在于嵌套 span
元素的情况下吗?
因为您指定了 jQuery 1.7.x,所以我选择不做那个假设,因为其他解决方案都失效了。我的版本改为遍历子 span
元素并替换父元素。如果子元素不存在,即使应用 MyClass
,父元素也不会发生任何变化。
$("span.MyClass>span").each(function () {
var childText = $(this).text();
var parent = $(this).parent();
$(parent).replaceWith(childText);
});
示例:JSFiddle
我对 SPAN 的 jquery selector 和函数的使用感到困惑 - 需要一些帮助:-)
在一大块 HTML-content 中,我想删除 all sorruning SPAN tags defined with a specific class (including the child tag ), 但保持内部span的内容不变(纯文本).
这里是HTML内容的例子:
<div id="SaveInfo">
<p>another content <span class="MyClass green">An expaination: <span>with a span</span></span> and more</p>
<p>another content <span class="MyClass">An explaination: <span>Content in span</span></span> and more content</p>
<!-- But NOT select this one (without .MyClass) -->
<p>another content <span class="green">Content in span</span> and more content</p>
</div>
输出应该是:
(删除了一些特定的周边 SPAN)
<div id="SaveInfo">
<p>another content with a span and more</p>
<p>another content Content in span and more content</p>
<!-- But NOT removed this one (without .MyClass) -->
<p>another content <span class="green">Content in span</span> and more content</p>
</div>
内容在 jquery 循环中,如下所示:
result += 'HTML content from each loop from before';
然后我用这个:
// set the content for further use
jQuery('#SaveInfo').html(result);
// removes instances of .RedClass from SaveInfo
jQuery('#SaveInfo .RedClass').remove();
它会删除不需要的 DIV 及其所有内容,但保留其余部分。这很好用。
现在我需要删除周围的 SPAN,但保留内部 SPAN 中的内容(作为文本)。
模式是这样的:
每个:
<span class="MyClass anotherclass">Info text <span>main content</span></span>
应转换为:
main content
并保留在 HTML 的其余位置。
所以我真正想要的是 select 每个 span.MyClass span
的内容,并在 HTML 内容中各自的位置输出纯文本。
我看过 unwrap()
,但还没有按预期工作。
现在我在 jQuery 1.7.1 环境中工作。
我力所能及,在这里寻求帮助:-)
可以使用replaceWith(function)
。这将遍历所有实例并单独处理它们
$('.MyClass').replaceWith(function(){
return $(this).children().text();
});
按照之前答案的路径:
$('.MyClass').replaceWith(function(){
var text = $(this).children("span").text();
if(text!="") return text;
else $(this).remove();
})
这不会把除了span之外的其他inside children的内容,在这种情况下:
<span class="MyClass">An explaination: <b>Content in span</b></span>
并且将删除没有 span child 的 MyClass span。本案:
<span class="MyClass">An explaination:</span>
https://jsfiddle.net/vov36trq/4/
如果不想删除里面没有 span 的 MyClass span:
$('.MyClass').replaceWith(function(){
return $(this).children("span").text();
})
你知道 MyClass
是否只存在于嵌套 span
元素的情况下吗?
因为您指定了 jQuery 1.7.x,所以我选择不做那个假设,因为其他解决方案都失效了。我的版本改为遍历子 span
元素并替换父元素。如果子元素不存在,即使应用 MyClass
,父元素也不会发生任何变化。
$("span.MyClass>span").each(function () {
var childText = $(this).text();
var parent = $(this).parent();
$(parent).replaceWith(childText);
});
示例:JSFiddle