contains与compareDocumentPosition方法详解
1. nodeA .contains( nodeB ):
Bits Number Meaning
000000 0 元素一致 |
<div id="a"> <div id="b"></div> </div> <script> alert( document.getElementById("a").compareDocumentPosition(document.getElementById("b")) == 20); </script> |
IE6/7/8 |
IE9 |
Firefox |
Safari |
Chrome |
Opera |
|
contains |
Y |
Y |
N |
Y |
Y |
Y |
compareDocumentPosition |
N |
Y |
Y |
Y |
Y |
Y |
// Compare Position - MIT Licensed, John Resig function comparePosition(a, b){ return a.compareDocumentPosition ? a.compareDocumentPosition(b) : a.contains ? ( a != b && a.contains(b) && 16 ) + ( a != b && b.contains(a) && 8 ) + ( a.sourceIndex >= 0 && b.sourceIndex >= 0 ? (a.sourceIndex < b.sourceIndex && 4 ) + (a.sourceIndex > b.sourceIndex && 2 ) : 1 ) : 0; } |
PPK 提供了一个关于通过创建一个 getElementsByTagNames 方法使新功能可以被使用的很棒的例子:
// Original by PPK quirksmode.org
function getElementsByTagNames(list, elem) {
elem = elem || document;
var tagNames = list.split(’,’), results = [];
for ( var i = 0; i < tagNames.length; i++ ) {
var tags = elem.getElementsByTagName( tagNames[i] );
for ( var j = 0; j < tags.length; j++ )
results.push( tags[j] );
}
return results.sort(function(a, b){
return 3 - (comparePosition(a, b) & 6);
});
}
|
我们现在可以使用他来按次序构建一个站点的目录:getElementsByTagNames("h1, h2, h3");
http://msdn.microsoft.com/en-us/library/ms536377%28VS.85%29.aspx
https://developer.mozilla.org/En/DOM/Node.compareDocumentPosition
http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-compareDocumentPosition
http://ejohn.org/blog/comparing-document-position/
转载于:https://www.cnblogs.com/zhengyinhui/archive/2013/01/05/2847979.html
contains与compareDocumentPosition方法详解相关推荐
- python统计csv行数_对Python 多线程统计所有csv文件的行数方法详解
如下所示: #统计某文件夹下的所有csv文件的行数(多线程) import threading import csv import os class MyThreadLine(threading.Th ...
- python修改文件内容_Python批量修改文本文件内容的方法详解
这篇文章主要介绍了Python批量修改文本文件内容的方法的相关资料,需要的朋友可以参考下 Python批量替换文件内容,支持嵌套文件夹 import os path="./" fo ...
- python二维元组_python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
如何去读取一个没有表头的二维csv文件(如下图所示)? 并以元组的形式表现数据: ((1.0, 0.0, 3.0, 180.0), (2.0, 0.0, 2.0, 180.0), (3.0, 0.0, ...
- Spring JdbcTemplate方法详解
2019独角兽企业重金招聘Python工程师标准>>> Spring JdbcTemplate方法详解 标签: springhsqldbjava存储数据库相关sql 2012-07- ...
- golang 解析php序列化,golang实现php里的serialize()和unserialize()序列和反序列方法详解...
Golang 实现 PHP里的 serialize() . unserialize() 安装 go get -u github.com/techleeone/gophp/serialize 用法 pa ...
- ES5和ES6数组遍历方法详解
ES5和ES6数组遍历方法详解 在ES5中常用的10种数组遍历方法: 1.原始的for循环语句 2.Array.prototype.forEach数组对象内置方法 3.Array.prototype. ...
- linux expect 输入密码,shell脚本无密码登录 expect的使用方法详解
shell脚本无密码登录 expect的使用方法详解 今天需要做一个定时任务脚本将最新的数据包文件传到远程的服务器上,虽然有密钥但也是要求输入密码的那种,所以只能另想办法实现让脚本自动输入密码了. 从 ...
- 饥荒怎么自动订阅服务器,饥荒联机版自动挂礼物mod及使用方法详解
饥荒联机版中官方经常会推出一些挂机掉落礼物的活动,可能一些玩家会觉得很麻烦,下面给大家分享一些自动挂礼物mod和其使用方法,希望可以帮助到各位玩家. 饥荒联机版自动挂礼物mod及使用方法详解 挂礼物m ...
- linux oracle 用户创建,LINUX下Oracle数据库用户创建方法详解
本文实例分析了LINUX下Oracle数据库用户创建方法.分享给大家供大家参考,具体如下: 1)登录linux,以oracle用户登录(如果是root用户登录的,登录后用 su - oracle命令切 ...
最新文章
- ACM模板--邻接表 无向图 Prim Kruskal Dijkstra
- C++20 - 下一个大版本功能确定
- String、String Buffer、StringBuilder区别与比较
- STM32——I2C
- c语言中字符串 x,使用c语言解析字符串176x144中的数字
- 我的docker随笔35:jenkins服务部署
- javascript中的options.add() options.remove() options(index)或options.item(index)
- (附源码)计算机毕业设计ssm 航空订票系统
- CREO:CREO软件之零件【编辑】之修饰、用户定义特征的简介及其使用方法(图文教程)之详细攻略
- mybatis的startPage使用
- 经济学人精读丨中国的电子商务
- Ubuntu16.04添加Pycharm快捷方式在启动器并修复问号图标问题
- 文科大一计算机基础知识笔试答案,大学文科计算机基础知识.doc
- 如何把pacs系统移到新服务器,PACS系统数据管理迁移解决方案(8页)-原创力文档...
- 02-Vue基础之条件渲染和列表渲染
- 【组队学习】【33期】组队学习内容详情
- iOS 绘图(drawrect)图片裁剪的红色框框
- 新浪张俊林:大语言模型的涌现能力——现象与解释
- Redis常用的命令(一)-------启动、配置等
- 批量将JPG转换为PDF文档的方法,看完这篇你就知道了
热门文章
- BurpSuite的使用总结
- C# DateTime 日期加1天 减一天 加一月 减一月 等方法(转)
- 什么是REST?以及RESTful的实现之二
- e-cology在保险行业——泛微保险行业解决方案
- 设计模式 — 创建型模式 — 单例模式
- Linux Kernel TCP/IP Stack — L3 Layer — netfilter/iptables 防火墙
- 标准W3C盒子模型和IE盒子模型CSS布局经典盒子模型(转)
- P4166 [SCOI2007]最大土地面积
- madplay播放器移植
- 为什么okhttpclient不能builder