所以我有以下字符串:
var s = '<span>Some Text</span> Some other Text';
结果应该是一个包含内容“Some other Text”的字符串。
我试过......
var $s = $(s).not('span');
...以及remove()
,not()
等许多其他内容,但没有任何效果。
有什么建议吗?我可以将字符串与正则表达式匹配,但我更喜欢常见的jQuery解决方案。
修改
我不使用正则表达式搜索解决方案,我只是想知道为什么这个示例不起作用: http://jsfiddle.net/q9crX/150/
答案 0 :(得分:49)
您可以将string
包装在jQuery对象中并执行某种类似的操作:
var removeElements = function(text, selector) {
var wrapped = $("<div>" + text + "</div>");
wrapped.find(selector).remove();
return wrapped.html();
}
<强> USAGE 强>
var removedSpanString = removeElements("<span>Some Text</span> Some other Text", "span");
这种方法的优点在于您可以指定要删除的jquery选择器。即您可能希望删除字符串中的<th>
。在这种情况下,这将非常方便。
希望这可以帮助!
答案 1 :(得分:11)
一种非常简单的方法:
var html = '<span>Remove <b>tags & entities</b></span>';
var noTagText = $(html).text();
// ==> noTagText = 'Remove tags & entities'
请注意,它会删除标签,但也会删除html实体。
答案 2 :(得分:10)
这可能符合您的需求:
<([^ >]+)[^>]*>.*?</\1>|<[^/]+/>
在JavaScript中:
$s = s.replace(/<([^ >]+)[^>]*>.*?<\/\1>|<[^\/]+\/>/ig, "");
它还会删除自动关闭标记(例如<br />
)。
答案 3 :(得分:3)
只需删除像这样的
var s = '<span>Some Text</span> Some other Text';
var r = /<(\w+)[^>]*>.*<\/\1>/gi;
s.replace(r,"");
这里给出的答案:http://www.webdeveloper.com/forum/showthread.php?t = 252483
答案 4 :(得分:2)
检查link
e.g。更具体的案例: -
var s = '<span>Some Text</span> Some other Text';
var $s = s.replace(/<span>(.*)<\/span>/g, "");
答案 5 :(得分:2)
请执行以下操作:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("span").not("span div").each(
function(index, element) {
$("span").remove();
}
);
});
</script>
<span>Some Text</span> Some other Text