javascript contains方法

原创|其它|编辑:郝浩|2009-10-28 10:32:13.000|阅读 444 次

概述:IE有许多好用的方法,后来都被其他浏览器抄袭了,比如这个contains方法。如果A元素包含B元素,则返回true,否则false。唯一不支持这个方法的是IE的死对头firefox。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

IE有许多好用的方法,后来都被其他浏览器抄袭了,比如这个contains方法。如果A元素包含B元素,则返回true,否则false。唯一不支持这个方法的是IE的死对头firefox。

不过火狐支持compareDocumentPosition() 方法,这是W3C制定的方法,标准浏览器都支持,不过实用性性很差,因此没有什么人用,推广不开来。它的使用形式与contains差不多,但返回的不是一个布尔值,而是一个很奇怪的数值,它是通过如下方式累加计算出来的:

  • 如果B与A不相连(Position disconnected),加1;(怎么我死活搞不出1来呢???)
  • 如果B是在A的前面,加2;
  • 如果B是在A的后面,加4;
  • 如果B包含A,加8;
  • 如果B被A包含,加16。

PPK给出如下解决方法。

if (window.Node && Node.prototype && !Node.prototype.contains){
    Node.prototype.contains = function (arg) {
      return !!(this.compareDocumentPosition(arg) & 16)
    }
  }

我搞出个更短的:

if(!!window.find){
    HTMLElement.prototype.contains = function(B){
      return this.compareDocumentPosition(B) - 19 > 0
    }
  }


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:博客园

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP