Jquery 无法选择直接父元素
我有一个html页面,它全局存在div、section和ul元素,当然还有更多元素,但这些是最常见的 现在我在页面上的第四个列表中,例如下面的粗体Jquery 无法选择直接父元素,jquery,Jquery,我有一个html页面,它全局存在div、section和ul元素,当然还有更多元素,但这些是最常见的 现在我在页面上的第四个列表中,例如下面的粗体 <body> <div> <header> <ul id="firstList"> <li> [..] <section> <ul id="secondList"> [..] <section> &
<body>
<div>
<header>
<ul id="firstList">
<li>
[..]
<section>
<ul id="secondList">
[..]
<section>
<ul id="thirdList">
[..]
<section>
<ul id="fourthList">
<li><a>Test 1</a></li>
<li><a>Test 2</a></li>
<li><a>Test 3</a></li>
</ul>
[..]
但这给了我第一个列表作为输出。我假设jQuery自上而下地查看文档,所以filter:first-oh和get0的输出也有意义。。但是我怎样才能得到点击链接的第一个父节点呢
如果有人点击测试2,我想得到第四名作为一个输出,并最终得到位置,但这是为了以后试试这个
$("a").click(function(event){
[..]
var $parentEl = $(this).closest('ul');
alert( $parentEl.attr("id") );
});
并获取链接在其兄弟姐妹之间的位置
$("a").click(function(event){
[..]
// returns the 0-based index of the `li` among it's sibling `li`s
var idx = $(this).parent().prevAll().length;
});
即使你接受了一个答案,我也会留下一个答案,因为接受的答案并不能解释实际问题 你的代码是正确的,除了一件事。您将标记名存储在一个变量中,并使用该变量获取页面上的所有元素。如果你能摆脱它,你的代码就可以工作了
$("a").click(function(event){
var parentEl = $(this).parents('ul').filter(":first");
alert( parentEl.attr("id") ); // should alert "fourth"
});
略短的版本为:
$("a").click(function(event){
var parentEl = $(this).parents('ul:first');
alert( parentEl.attr("id") ); // should alert "fourth"
});
将按找到元素的顺序返回元素,因此将给出找到的第一个元素
从文档中:
..元素按从最近的父元素到外部元素的顺序返回
你也可以,但结果是一样的
另外,为了从它的兄弟姐妹中获得它的位置,有一种更简单的方法使用jQuery1.4或更高版本。您只需执行以下操作:
这将为您提供其兄弟姐妹中的位置。太棒了!谢谢你真的应该知道所有的功能哈哈!
$("a").click(function(event){
var parentEl = $(this).parents('ul:first');
alert( parentEl.attr("id") ); // should alert "fourth"
});
var index = $(this).parent().index();