2

我有一个contenteditable复制用户文本的 HTML 代码的选项。我想删除style=""浏览器添加到某些元素的属性。例如:

<h2>what</h2><p><span style="color: rgb(54, 54, 54); font-size: 18px; line-height: 1.77777778em;">what is&nbsp;this</span><span style="color: rgb(54, 54, 54); font-size: 18px; line-height: 1.77777778em;">&nbsp;</span></p><p></p>

我怎么能用 jQuery 做到这一点?

我已经尝试过,但它不起作用:

$('#post_content').keydown(function(e) {
  // if ctrl + e
  if ((e.metaKey || e.ctrlKey) && e.keyCode == 69) {
    var html = $('#post_content').removeAttr('style').html();
    prompt("Ctrl+C to copy HTML code", html);
  }
});

有任何想法吗?谢谢!

4

2 回答 2

3

removeAttr()为此目的应该可以正常工作

我怀疑问题出在您的选择器#post_content上——不在您提供的示例 HTML 中。

于 2013-02-12T20:14:29.097 回答
2
$("#post_content *").removeAttr("style");
prompt("Ctrl+C to copy HTML code", $("#post_content").html());

http://jsfiddle.net/WHRST/

您必须选择 contenteditable 元素的所有后代。因此,您在选择中使用 (*),一旦您拥有所有后代,您就可以调用 .removeAttr("style") ,它将从集合中的每个元素中删除。

于 2013-02-12T20:20:20.603 回答