如何使用同一个类来切换单个元素

时间:2016-08-11 07:14:42

标签: jquery html css html5

我的HTML代码如下:

<img src="img.png" class="arrow"><h2 class="title">Heading 1</h2>
<p class="intro">Lorem Ipsum 1</p>

<img src="img.png" class="arrow"><h2 class="title">Heading 2</h2>
<p class="intro">Lorem Ipsum 2</p>

<img src="img.png" class="arrow"><h2 class="title">Heading 3</h2>
<p class="intro">Lorem Ipsum 3</p>

如果我点击第一个img元素,我想切换&#34;介绍&#34; class,但只有第一个元素。如果我单击secont img,切换第二个&#34; intro&#34;等等。我如何在jQuery中执行此操作? (&#34;介绍&#34;显示:无;在CSS中)。我尝试了选择伪类:

$(".intro:first-child").click(function() {
    $("intro:first-child").toggle();
}

但它不起作用。也许我应该使用id(id =&#34; intro-1&#34;,&#34; intro-2&#34;等)代替类并在jQuery中分别选择每个元素?

4 个答案:

答案 0 :(得分:2)

使用 nextAll() 方法和 :first 伪类选择器。将click事件处理程序附加到img标记,内部处理程序this引用单击的元素dom对象。

// attach click event handler to all img tag
$(".arrow").click(function() {
    // get first `.intro` after the clicked img tag
    $(this).nextAll('.intro:first').toggle();
})

&#13;
&#13;
$(".arrow").click(function() {
  $(this).nextAll('.intro:first').toggle();
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<img src="img.png" class="arrow">
<h2 class="title">Heading 1</h2>
<p class="intro">Lorem Ipsum 1</p>

<img src="img.png" class="arrow">
<h2 class="title">Heading 2</h2>
<p class="intro">Lorem Ipsum 2</p>

<img src="img.png" class="arrow">
<h2 class="title">Heading 3</h2>
<p class="intro">Lorem Ipsum 3</p>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

你可以通过在图像上切换类来实现。它还可以为您设置活动图像的样式。工作示例如下所示。

.intro {
    display: none;
}

img.arrow {
    border: 1px solid transparent;
}

img.image-active {
    border-color: #0f0;
}

.image-active + h2 + .intro {
    display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<img src="img.png" class="arrow"><h2 class="title">Heading 1</h2>
<p class="intro">Lorem Ipsum 1</p>

<img src="img.png" class="arrow"><h2 class="title">Heading 2</h2>
<p class="intro">Lorem Ipsum 2</p>

<img src="img.png" class="arrow"><h2 class="title">Heading 3</h2>
<p class="intro">Lorem Ipsum 3</p>
layout.html.twig

答案 2 :(得分:1)

合并.nextAll().eq()。请查看以下示例

&#13;
&#13;
$(function() {
  $("img.arrow").click(function() {
    $(this).nextAll('.intro').eq(0).toggle();
  });
});
&#13;
.intro {
  display: none;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<img src="img.png" class="arrow">
<h2 class="title">Heading 1</h2>
<p class="intro">Lorem Ipsum 1</p>

<img src="img.png" class="arrow">
<h2 class="title">Heading 2</h2>
<p class="intro">Lorem Ipsum 2</p>

<img src="img.png" class="arrow">
<h2 class="title">Heading 3</h2>
<p class="intro">Lorem Ipsum 3</p>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

$(".arrow").click(function() {
    $(this).next('.intro').toggle();
});