javascript - 使用 jQuery XPath 选择器

标签 javascript jquery xpath

我使用一个简单的 DOM 解析器函数来捕获文档所有节点的 XPath 信息

例如,HTML 是:

<div>
  <div>Everyday People</div>
  <div>My name is ACE</div>
  <div>Hello world</div>
</div>

解析 DOM 以将 XPath 信息存储在数组 arr 中:

<script type="text/javascript" src="js/jquery/js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="js/jquery/js/xpath-selector.js"></script>

<script type="text/javascript">
function get_XPath(elt) 
{
  var path = '';
  for (; elt && elt.nodeType == 1; elt = elt.parentNode)
  {
    var idx = $(elt.parentNode).children(elt.tagName).index(elt) + 1;
    idx > 1 ? (idx='[' + idx + ']') : (idx='');
    path = '/' + elt.tagName.toLowerCase() + idx + path;
  }
  return path;
}

var arr = Array();
htmlDoc = document;
x = htmlDoc.documentElement.childNodes;

for (i=0; i<x.length; i++)
{
  arr.push(get_XPath(x[i]));  
}
</script>

稍后在脚本中,我使用存储在 arr 中的值来执行一些功能,例如显示、隐藏或更改节点的内容。

<script>
for(i=0;i<arr.length;i++)
{
  //catch the object reference with the XPath info
  $(arr[i])

}
</script>

在上面的代码片段中,我获取了一个对象,但无法获取对象引用以将其用于以下用途:

$(arr[i]).text();

非常欢迎任何帮助。有人研究过 jQuery XPath 选择器吗?

最佳答案

我不太确定除了选择元素之外是否还需要 Xpath。因为如果不这样做,您可以将元素本身存储在 arr 数组中:

var arr = new Array();
htmlDoc = document;
x = htmlDoc.documentElement.childNodes;

for (i=0,b=x.length; i<b; i++){
  arr.push($(x[i]));  
}

那么你可以这样做:

arr[i].text();

关于javascript - 使用 jQuery XPath 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/905897/

相关文章:

java - 通过 "id"属性进行 XPath 搜索,给出 NPE - Java

php - 如何通过 Domdocument 获取第一级 dom 元素?

jquery - 如何在jquery中使用变量代替ID

c# - asp.net mvc 3 silverlight 类似验证

xml - 如何计算节点的属性数量?

javascript - 滚动线动画 - HTML、CSS、JS

javascript - ResponsiveSlides 不显示寻呼机

javascript - 你如何每秒将一个 div 附加到一个容器?

javascript - 检查时间是否大于一天中的特定时间

javascript - 使用 JSON 维护 RESTful url 的正确 Angularjs 方法