13 Stimmen

jQuery - Suche nach dem nächsten Div

Ich versuche, das nächste Div nach einer Eingabetaste zu finden und es umzuschalten.

Was mache ich falsch?

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>

Okay, das funktioniert NICHT ---

$(".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>

Wenn ich die Eingabetaste direkt über das DIV verschiebe, funktioniert es einwandfrei.

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

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

Können Sie das erklären?

24voto

karim79 Punkte 333786

Einfach:

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

Siehe:

6voto

zachzurn Punkte 2131
$(".showNextExperience").click(function() {
    $(this).next().show();
});

3voto

ShankarSangoli Punkte 68964

Versuchen Sie dies

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

0voto

Michael Punkte 3770

$(this).siblingings().eq(0) sollte es tun.

0voto

Robbit Punkte 71

Angenommen, Sie haben Elemente zwischen der auslösenden Eingabe und dem manipulierten 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>

Dann müssen Sie nextAll nicht nur nach dem nächsten Element zu suchen, sondern das gesamte DOM zu durchsuchen, was wahrscheinlich einfacher zu programmieren ist als mit next().find() :

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X