首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择不是当前元素父级的上一个标题/ JQuery

选择不是当前元素父级的上一个标题/ JQuery
EN

Stack Overflow用户
提问于 2014-06-16 22:58:14
回答 2查看 525关注 0票数 2

我有以下标记

代码语言:javascript
复制
<div id="section1">
  <h1>Titel 1</h1>
  <p>Some smart Text</p>
</div>
<div id="section2"> 
  <h2>Titel 2</h2>
  <p>Some smart Text2</p>
</div>
<div id="section3-1">
  <h3>Titel 3-1</h3>
</div>
<div id="section3-1content">
  <ul>
     <li id="section3-1content-el1">El1</li>
     <li id="section3-1content-el2">El2</li>
  </ul>
</div>
<div id="section3-2">
  <h3>Titel 3-2</h3>
</div>
<div id="section3-2content">
  <ul>
     <li id="section3-2content-el1">El1</li>
     <li id="section3-2content-el2">El2</li>
  </ul>
</div>

当我点击#section3-2content-el2时,我想返回

代码语言:javascript
复制
 <h3>Titel 3-2</3>

(最近的h3),然后

代码语言:javascript
复制
 <h2>Titel 2</h2> 

然后

代码语言:javascript
复制
 <h1>Titel 1</h1>.

问题是,h3、h2和h1实际上并不是被点击元素的父元素。有没有办法回到源代码中,找到第一个h3,然后是第一个h2,然后是第一个h1?

问题在于:

代码语言:javascript
复制
$('#section3-2content-el1').click(function(){
  $('#section3-2content-el1').parents('h3');
  $('#section3-2content-el1').prevAll('h3');
  $('#section3-2content-el1').closest('h3');
});

他们都在dom上旅行,看看其中一个是不是h3。但是h3不是所单击元素的父级。

EN

回答 2

Stack Overflow用户

发布于 2014-06-16 23:10:56

有很多选择。考虑到你的html结构,:last是最好的选择。查看演示。

代码语言:javascript
复制
$(this).parents('body').find('h3:last')

如果你的标题标签是一致的,.prev()将是另一个选择。

票数 0
EN

Stack Overflow用户

发布于 2014-06-16 23:16:39

为此,我将使用jQuery的.map()方法返回一个类名数组(或者,无论如何,是一个数组)。然后,您可以将单击的元素的类名与共享其类名的标题进行匹配。

首先,在<h3><li>中添加一些类:

代码语言:javascript
复制
<div id="section1">
    <h1>Titel 1</h1>
    <p>Some smart Text</p>
</div>
<div id="section2"> 
    <h2>Titel 2</h2>
    <p>Some smart Text2</p>
</div>
<div id="section3-1">
    <h3 class="first">Titel 3-1</h3>
</div>
<div id="section3-1content">
    <ul>
        <li id="section3-1content-el1" class="first">El1</li>
        <li id="section3-1content-el2" class="first">El2</li>
    </ul>
</div>
<div id="section3-2">
    <h3 class="second">Titel 3-2</h3>
</div>
<div id="section3-2content">
    <ul>
        <li id="section3-2content-el1" class="second">El1</li>
        <li id="section3-2content-el2" class="second">El2</li>
    </ul>
</div>

和JS/jQuery:

代码语言:javascript
复制
$(document).ready(function(){
    $('li').click(function(){
        var self = $(this);

        // Create an array of class names
        var cls = $('h3').map(function(){
            return $(this).attr('class');
        });

        // Loop through the array until the current iteration matches the class name of the clicked element
        for (var i = 0; i < cls.length; i++) {
            if (self.hasClass(cls[i])) {

                // Do stuff based on whether there is a match
                alert($('h3.' + cls[i]).attr('class'));
            }
        }
    });
});

小提琴:http://jsfiddle.net/KFS4E/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24246575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档