2017-04-01 1 views
0

Ich habe den folgenden HTML-Code für das Quiz mit 3 Optionen. Ich möchte die Klasse .active in die Klasse hinzufügen.Wie Sie eine aktive Klasse nur einem Elternelement mit Jquery hinzufügen?

<ul class="questionList"> 
<li class="questionItem" data-pos="0"><span class="question">Question Text</span></li> 
<li class="questionItem" data-pos="1"><span class="question">Question Text</span></li> 
<li class="questionItem" data-pos="2"><span class="question">Question Text</span></li> 
</ul> 

Zur Zeit habe ich den folgenden Code:

$(this).parent().find('.questionItem').addClass('active'); 

Dies ist jedoch das Hinzufügen aktiv zu ALLEN questionItem s. Stattdessen möchte ich diese Klasse genau der questionItem Klasse hinzufügen, auf die geklickt wurde.

+1

Was ist 'this'? Es sieht so aus, als ob Sie nur '$ (this) .addClass ('active');' – 4castle

Antwort

1

Es sieht so aus als ob this sich auf das angeklickte Element bezieht, also verwenden Sie einfach die $(this). Ich habe einige Klick-Ereignisse hinzugefügt, um zu zeigen, wie this funktioniert.

$(".questionItem").click(function() { 
 
    $(this).addClass('active'); 
 
});
.active { 
 
    background:red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul class="questionList"> 
 
<li class="questionItem" data-pos="0"><span class="question">Question Text</span></li> 
 
<li class="questionItem" data-pos="1"><span class="question">Question Text</span></li> 
 
<li class="questionItem" data-pos="2"><span class="question">Question Text</span></li> 
 
</ul>

Wenn Sie jedoch stattdessen sind versucht, die Eltern zu wählen, haben Sie keine Notwendigkeit für eine .find:

$(".questionItem").click(function() { 
 
    $(this).parent().addClass('active'); 
 
});
.active { 
 
    background:red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul class="questionList"> 
 
<li class="questionItem" data-pos="0"><span class="question">Question Text</span></li> 
 
<li class="questionItem" data-pos="1"><span class="question">Question Text</span></li> 
 
<li class="questionItem" data-pos="2"><span class="question">Question Text</span></li> 
 
</ul>

+0

Danke, es funktioniert! – GRS

+0

Ja, natürlich gibt es ein Zeitlimit, dass ich warten musste, um es als abgeschlossen zu markieren – GRS

2

ich denke, die folgender Code wird dir helfen!

$('.questionItem').click(function(){ 
    $(this).addClass('active').siblings().removeClass('active'); 
}); 
Verwandte Themen