【发布时间】:2011-04-06 21:56:39
【问题描述】:
我得到了这个函数来获取一个 cssPath :
var cssPath = function (el) {
var path = [];
while (
(el.nodeName.toLowerCase() != 'html') &&
(el = el.parentNode) &&
path.unshift(el.nodeName.toLowerCase() +
(el.id ? '#' + el.id : '') +
(el.className ? '.' + el.className.replace(/\s+/g, ".") : ''))
);
return path.join(" > ");
}
console.log(cssPath(document.getElementsByTagName('a')[123]));
但我得到了这样的东西:
html > body > div#div-id > div.site > div.clearfix > ul.choices > li
但完全正确,它应该是这样的:
html > body > div#div-id > div.site:nth-child(1) > div.clearfix > ul.choices > li:nth-child(5)
有人有什么想法可以简单地在 javascript 中实现它吗?
【问题讨论】:
-
如果你想要一个 CSS 选择器,它可能应该是
:eq(1)或:nth-child(2)而不是[1]。 -
或者只是用 JavaScript 给元素一个唯一的 ID?我可以理解为什么 cssPath 作为 FireBug 插件或其他东西可能很有用,但对于常规代码,引入 ID 是最有效的。
-
事实上,我相信有一个 FireBug 插件可以从一个名为 FireFinder 的元素中获取 cssPath ;oP
-
simmer.js 看起来是一个很好的库。
标签: javascript css css-selectors