如何从每个标签中删除每个属性
How do I remove every attribute from every tag?
我正在尝试将粘贴的MS Word格式剥离到Telerik RadEditer中。不幸的是,我似乎无法让内置格式剥离器工作。
//performing paste
var editor = $find("radEditor1");
editor.setFocus();
var rng = editor.getSelection().getRange();
rng.execCommand("Paste", null, false);
//does nothing! (even when uncommented)
//editor.fire("FormatStripper", {value: "MSWordRemoveAll" });
所以我想我可以利用 jQuery 将所有属性串起来,这可能正是我所需要的。
//fixing content
var html = editor.get_html();
$("*", html).each(function(){
var attr = $.map(this.attributes, function(item){
return item.name;
});
var node = $(this);
$.each(attr, function(i, item){
//added a filter for crazy Error
if(item != "dataSrc" &&
item != "implementation" &&
item != "dataFld" &&
item != "dataFormatAs" &&
item != "nofocusrect" &&
item != "dateTime" &&
item != "cite")
node.removeAttr(item);
});
});
editor.set_html(html);
现在,在这个函数完成后,我的 html 变量没有更新它的 html...
这段代码似乎可以解决问题。它使用safeAttrs
数组来更轻松地更新要保留的属性列表。您可以.removeAttr()
传递一个以空格分隔的要删除的属性列表,因此您无需逐个循环访问属性名称。
浏览器可能会以不同的方式处理属性(例如,Chrome将所有属性以小写形式存储,因此"dataFld"存储为"datafld"),因此最好使用.toLowerCase()
将它们全部规范化
var safeAttrs = ["datasrc","implementation","datafld","dataformatas","nofocusrect","datetime","cite"];
$('html *').each(function() {
var attrs = $.map(this.attributes,function(attr) {
if($.inArray(attr.nodeName.toLowerCase(),safeAttrs) < 0) {
return attr.nodeName;
} else { return null; }
});
$(this).removeAttr(attrs.join(' '));
});
jsFiddle DEMO.使用 Chrome 或 Firebug 检查生成的元素,以检查属性是否已被删除。
我想我有。
var html = editor.get_html();
var parent = $('<div></div>').html(html);
$(parent).find('*').each(function(){
var attr = $.map(this.attributes, function(item){
return item.name;
});
var tag = $(this);
$.each(attr, function(i, item){
tag.removeAttr(item);
});
});
editor.set_html(parent.html());
http://jsfiddle.net/duC6Z/8/
不幸的是,我的 RadEditor 仍然有问题,但这很正常。
相关文章:
- 在不知道深度或父属性的情况下从对象中删除属性
- 如何从对象中删除属性
- 使用jQuery添加和删除属性
- 为什么没有从数组中存在的对象中删除属性
- 删除属性后刷新DOM,而不象chrome那样刷新页面
- Jquery 在当前之前从元素中删除属性
- 在窗口调整大小时删除属性
- 如何从使用 jquery 添加的项中删除属性
- 从 JavaScript 中的 XAML 元素中删除属性
- 主干模型.未设置不删除属性
- 无法在单击时添加/删除属性
- 从主干.js模型中删除属性
- 如果选中复选框,请删除属性
- jQuery单击功能可从元素中删除属性并在单独单击时恢复属性
- 如果找到特定类,如何添加和删除属性
- 如何使用 Javascript 从 DOM 元素中删除属性
- 从 Javascript 对象中删除属性
- 量角器未知错误,从 DOM 中删除属性
- 如何使用jquery onchange事件在HTML中添加和删除属性
- 如何从任何级别的嵌套javascript对象中删除属性