我正在尝试使用<div contenteditable="true>
来获取用户的文字。我会使用一个简单的<textarea>
,但我需要换行符,最终需要列表和表等。我正在尝试构建一个半文本编辑器,但不是一个完整的编辑器。我不想使用富文本编辑器。
我正在尝试从<span>
中键入的文本中删除<div contenteditable="true>
标记上的属性。有没有办法用Regexp做到这一点?我在提出Regexp方面遇到了困难,因为我无法弄清楚如何制作它以使字符串以<span
开头并以>
结尾,并且任意数量的字符可以介于两者之间。有没有办法将其组合在一个Regexp中?我提出了/^<span >$/
,但这不起作用,因为两个字符串之间没有划分。这样的事情会起作用吗/^[<span][>]$/g
?
答案 0 :(得分:1)
解析HTML ,然后删除属性。如果您是在浏览器中执行此操作,则可以使用高级HTML解析器(或您拥有IE),因此请使用它!
答案 1 :(得分:1)
使用DOM函数。下面是一些使用jQuery的代码,使其更容易阅读:
$('#your-div span').each(function() {
var elem = this, $elem = $(this);
$.each(elem.attributes, function(i, attr) {
if(attr) {
$elem.removeAttr(attr.name);
}
});
});
演示:http://jsfiddle.net/ThiefMaster/qfsAb/
但是,在您的情况下,您可能不仅要从跨度中删除属性,还要从所有元素中删除属性,除非该属性是例如align
或href
。
所以,这里有一些JS:http://jsfiddle.net/ThiefMaster/qfsAb/1/
$('#your-div').children().each(function() {
var elem = this, $elem = $(this);
$.each(elem.attributes, function(i, attr) {
if(attr && attr.name != 'href' && attr.name != 'align') {
$elem.removeAttr(attr.name);
}
});
});
答案 2 :(得分:1)
$('#editor span').each(function(i, el) {
var attrs = el.attributes;
$.each(attrs, function(i, a) {
$(el).removeAttr(a.name);
});
});
[我更改了一个早先的版本,它将内容复制到内存中,编辑后再替换 - 没有意识到输入div的内容在DOM中自动生效]。
答案 3 :(得分:0)
试试这个:
your_string.replace(/<span[^>]*>/g, '<span>');
如果用户写了类似<span title="Go > there">