Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 无法选择直接父元素_Jquery - Fatal编程技术网

Jquery 无法选择直接父元素

Jquery 无法选择直接父元素,jquery,Jquery,我有一个html页面,它全局存在div、section和ul元素,当然还有更多元素,但这些是最常见的 现在我在页面上的第四个列表中,例如下面的粗体 <body> <div> <header> <ul id="firstList"> <li> [..] <section> <ul id="secondList"> [..] <section> &

我有一个html页面,它全局存在div、section和ul元素,当然还有更多元素,但这些是最常见的

现在我在页面上的第四个列表中,例如下面的粗体


<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();