jQuery jQuery.htmlPrefilter() 方法


实例

从传入HTML字符串中删除所有标签

  1. $(function() {
  2. var htmlPrefilter = $.htmlPrefilter,
  3. rdel = /<(del)(?=[\s>])[\w\W]*?<\/\1\s*>/gi;
  4. $.htmlPrefilter = function( html ) {
  5. return htmlPrefilter.call( this, html ).replace( rdel, "" );
  6. };
  7. var htm = '<del>删除</del><h1>标题</h2>';
  8. $('body').append($.htmlPrefilter(htm));
  9. });
运行一下 »

定义和用法

$.htmlPrefilter() 函数通过jQuery操作方法修改和过滤HTML字符串。


注意:1. 这种方法很少需要直接调用,反而可以使用这个方法作为修改现有jQuery操作方法的一个切入点。

语法

$.htmlPrefilter( html )

参数 描述
html String类型 在该HTML字符串上进行操作

更多实例

确保任何HTML字符串都符合XHTML标准

  1. $(function() {
  2. var panything = "[\\w\\W]*?",
  3. // 空白
  4. pspace = "[\\x20\\t\\r\\n\\f]",
  5. // 标签结尾(whitespace or greater-than)
  6. pnameEnd = pspace.replace( "]", ">]" ),
  7. // 标签名
  8. // https://html.spec.whatwg.org/multipage/syntax.html#tag-open-state
  9. // https://html.spec.whatwg.org/multipage/syntax.html#tag-name-state
  10. pname = "[a-z]" + pnameEnd.replace( "[", "[^/\\0" ) + "*",
  11. // 空元素
  12. // https://html.spec.whatwg.org/multipage/syntax.html#void-elements
  13. pvoidName = "(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|" +
  14. "source|track|wbr)(?=" + pnameEnd + ")",
  15. // 属性
  16. // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
  17. pattrs = "(?:" + pspace + "+[^\\0-\\x20\\x7f-\\x9f=\"'/>]+(?:" + pspace + "*=" + pspace +
  18. "*(?:\"" + panything + "\"|'" + panything + "'|" +
  19. pnameEnd.replace( "[", "[^" ) + "*(?!/)" +
  20. ")|))*" + pspace + "*",
  21. // 关闭标签的尾随内容
  22. pcloseTail = "(?:" + pspace + panything + "|)",
  23. rspecialHtml = new RegExp(
  24. // 自关闭的非空元素: $1–$5
  25. "(<)(?!" + pvoidName + ")(" + pname + ")(" + pattrs + ")(\\/)(>)|" +
  26. // 非 HTML容器 (element, comment, 或者 CDATA): $6
  27. "(<(script|style|textarea)" + pattrs + ">" + panything + "<\\/\\7" + pcloseTail + ">|" +
  28. "<!--" + panything + "--)",
  29. "gi"
  30. ),
  31.  
  32. pspecialReplacement = "$1$2$3$5$1$4$2$5$6";
  33. $.htmlPrefilter = function( html ) {
  34. return ( html + "" ).replace( rspecialHtml, pspecialReplacement );
  35. };
  36. var htm = '<a /><meta>1516</meta>';
  37. alert($.htmlPrefilter(htm));
  38. alert(htm);
  39. });

任何HTML字符串都符合XHTML标准,从传入HTML字符串中删除所有 <del>标签也可以这样解决。

运行一下 »