jquery - 有没有办法根据 jQuery 中的 DOM 元素生成 CSS 选择器

标签 jquery dom jquery-selectors

有没有办法获取 DOM 对象并推断出可用于稍后查找该元素的 CSS 选择器。

示例:

<ul class="items">
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
</ul>

<script type="text/javascript">
var second = $('.items li:eq(1)');
console.log(get_css_selector(second));
</script>

其中 get_css_selector 将返回类似于 .items li:eq(1) 的内容,或者至少返回一个可用于选择元素的字符串。

如果有一种方法可以根据以下内容生成 CSS 选择器,那就太好了:

<script type="text/javascript">
var third = document.getElementsByTagName('li')[2];
console.log(get_css_selector(third));
</script>

最佳答案

您似乎正在尝试使用原始选择器。我的说法正确吗?还是我把事情过于简单化了?

原始选择器存储在您创建的 jQuery 对象中。

尝试一下: http://jsfiddle.net/9JUJL/

var second = $('.items li:eq(1)');
var selector = second.selector;

或者为了奖金,这个? http://jsfiddle.net/9JUJL/2/

function get_css_selector(elem) {
    var tag = elem.tagName.toLowerCase();
    return tag + ':eq(' + $(tag).index(elem) + ')';
}

关于jquery - 有没有办法根据 jQuery 中的 DOM 元素生成 CSS 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3640293/

相关文章:

javascript - 如何让每个 dom 分别响应 mouseenter()?

javascript - Javascript 中 DOM 树的平滑更新

jquery - 伪类 nth-of-type 不适用于特定类

javascript - 最后创建的 DIV 位于其他 DIV 之上

javascript - jQuery 元素类不再工作

javascript - jQuery - 如何通过文本选择下拉列表项?

jquery-selectors - 如何在JQuery中向同一个类添加不同的类?

css-selectors - 为什么 cypress 无法识别我们是否给出完整的类名

jquery - 如何在 JQuery 对话框中捕获事件中的 ESC?

javascript - 我如何使用 jquery ajax() 和 $.when() 方法从 .xml 文档获取 xml 节点文本/值