jQuery - 查找下一个 Div

问题描述 投票:0回答:6

我试图在输入按钮后找到下一个 div 并切换它。

我做错了什么?

JS:

$(".showNextExperience").click(function() {
    $(".experience").show();
});

HTML:

<input class="showNextExperience" >
<div class="experience">Experience 1</div>

<input class="showNextExperience">
<div class="experience">Experience 2</div>

<input class="showNextExperience">
<div class="experience">Experience 3</div>

<input class="showNextExperience" >
<div class="experience">Experience 4</div>

好吧,这不起作用 ---

$(".showExperience").click(function() {
    $(this).next(".experience").toggle();
});

<table class="data">
    <tr class="tableHead">
        <td></td>
        <td width="50" align="right"><input type="button" class="showExperience" value="show"></td>
    </tr>
</table>
<div class="experience">2</div>

当我将输入按钮移到 DIV 上方时,它工作得很好。

$(".showExperience").click(function() {
    $(this).next(".experience").toggle();
});

<input type="button" class="showExperience" value="show">
<div class="experience">2</div>

你能解释一下吗?

jquery
6个回答
24
投票

简单地说:

$(".showNextExperience").click(function() {
    $(this).next(".experience").toggle();
});

参见:


6
投票
$(".showNextExperience").click(function() {
    $(this).next().show();
});

3
投票

试试这个

$(".showNextExperience").click(function() {
    $(this).next("div.experience").toggle();
});

1
投票

假设您在触发输入和操作的 div 之间有元素:

<input class="showNextExperience" >
<p>Hello, new line</p>
<div class="experience">Experience 1</div>

<input class="showNextExperience">
<p>Some text</p>
<div>And an info block</div>
<div class="experience">Experience 2</div>

然后你必须使用

nextAll
不仅搜索下一个元素,而且搜索整个 DOM,这可能比使用
next().find()
更简单的编码:

$(".showNextExperience").click(function() {
    $(this).nextAll(".experience").toggle();
});

0
投票

$(this).siblingings().eq(0)
应该这样做。


0
投票

在 id 为“test”的输入之后选择第一个带有“experience”类的元素

console.log($('#test').nextAll(".experience").first().text());
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<input class="showNextExperience" >
<div class="experience">Experience 1</div>

<input id='test' class="showNextExperience">
<div class="experience">Experience 2</div>

<input class="showNextExperience">
<div class="experience">Experience 3</div>

<input class="showNextExperience" >
<div class="experience">Experience 4</div>

© www.soinside.com 2019 - 2024. All rights reserved.