【发布时间】: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
如何将以下 xPath 转换为 jQuery 1.10 选择器?
/html/body/div[4]/div[2]/div/div/div/ul/li[4]
我想用结果来做这样的事情:
jQuery('selector').hide();
【问题讨论】:
标签: jquery xpath jquery-selectors
嗯,这是一个识别句法差异的问题:
/ 作为父/子分隔符,而 CSS/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 的回答做了一个小的改动来纠正这个问题。
这将是这样的:
$('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)')
【讨论】: