对于此示例标记:
<p>Hello <span class='blah'>John</span>, how are you?</p>
我正在尝试创建一个检测blah类的过滤器,只留下名称John,删除跨度。这是我的过滤器:
var rules = {
elements: {
span: function(element) {
if (element.hasClass("blah")) {
var text = element.children[0].value;
return text;
}
}
}
};
以下是我的示例代码:
var filter = new CKEDITOR.htmlParser.filter(rules);
var fragment = CKEDITOR.htmlParser.fragment.fromHtml(text);
var writer = new CKEDITOR.htmlParser.basicWriter();
filter.applyTo(fragment);
fragment.writeHtml(writer);
var results = writer.getHtml();
console.log(results);
答案 0 :(得分:1)
要使其正常工作,您需要返回CKEDITOR.htmlParser.text
的实例,而不是返回字符串。但是有一种更简单的方法:
var rules = {
elements: {
span: function(element) {
if (element.hasClass("blah")) {
delete element.name;
}
}
}
};
瞧! <span>
标记已被删除,但其内容已被删除。
答案 1 :(得分:0)
显然,诀窍是将name和class属性都设置为空字符串。这是updated fiddle。这是过滤器:
var filter = new CKEDITOR.htmlParser.filter({
elements: {
span: function(element) {
if (element.hasClass("blah")) {
element.name = "";
element.attributes.class = "";
return element;
}
}
}
});