【问题标题】:Convert xPath to jQuery Selector将 xPath 转换为 jQuery 选择器
【发布时间】:2014-04-29 12:53:38
【问题描述】:

如何将以下 xPath 转换为 jQuery 1.10 选择器?

/html/body/div[4]/div[2]/div/div/div/ul/li[4]

我想用结果来做这样的事情:

jQuery('selector').hide(); 

【问题讨论】:

    标签: jquery xpath jquery-selectors


    【解决方案1】:

    嗯,这是一个识别句法差异的问题:

    • XPath 使用 / 作为父/子分隔符,而 CSS/jQuery 选择器使用 >
    • XPath 使用单索引方括号来表示索引,而 jQuery 使用 :nth-child() 伪选择器

    所以:

    let xpath = '/html/body/div[4]/div[2]/div/div/div/ul/li[4]';
    let jq_sel = xpath
        .substr(1) //discard first slash
        .replace(/\//g, ' > ')
        .replace(/\[(\d+)\]/g, ($0, i) => ':nth-child('+i+')');
    

    【讨论】:

    • 除了处理nth-child 选择器之外,这工作正常。我似乎无法让它在 JQuery 3+ 中工作。也许他们改变了一些东西。否则只要您不必接触特定的孩子,就可以很好地工作。我根据下面@razielx4crazy 的回答做了一个小的改动来纠正这个问题。
    • 似乎 'nth-child' 匹配任何标签,xpath div[x] 将匹配第 x 个 div(不是其他标签)
    【解决方案2】:

    这将是这样的:

    $('html body div:eq(4) div:eq(2) div div div ul li:eq(4)')
    

    我不确定 div,也许它可能是另一个这样的:

    $('html body div:eq(4) div:eq(2) div:first div:first div:first ul li:eq(4)')
    

    【讨论】:

      猜你喜欢
      • 2012-09-16
      • 2019-04-20
      • 1970-01-01
      • 2012-05-11
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 2015-10-12
      • 1970-01-01
      相关资源
      最近更新 更多