J'ai une liste d'éléments qui peuvent être caché/visible via JS soit en cliquant sur eux. Actuellement ouvertes élément est stocké dans une variable, openActivity
. Un seul élément peut être ouvert à la fois. Je veux vérifier dans l'événement click() si les cliqué élément est le même que celui déjà ouvert, de sorte que ce n'est pas faire un double-animation de la fermeture et de l'ouverture. Je soupçonne que cela fonctionne dans un premier temps:
if (openActivity == $(this)) alert('hello');
Mais il ne le fait pas. J'ai noté cela ne fonctionne pas non plus:
if ($(this) == $(this)) alert('hello'); //never alert()s !
Voici toutes les plus pertinentes du code, si ça en vaut la peine pour vous (vous pouvez ne pas avoir à regarder ce):
openActivity = null;
$('.activityOuterContainer').click(function () {
if (openActivity !== null) {
if (openActivity == $(this)) alert('hello');
activityExtra(openActivity).slideUp();
activityToggle(openActivity).css('background-position', '0 0');
}
openActivity = $(this);
activityExtra(openActivity).slideDown();
activityToggle(openActivity).css('background-position', '0 -20px');
});
function activityToggle(a) {
return a.closest('.activityOuterContainer').find('.activityToggle');
}
function activityExtra(a) {
return a.closest('.activityOuterContainer').find('.activityExtra');
}
Et l'un des éléments:
<div class="activityOuterContainer">
<div class="activityContainer">
<div class="activityFormContainer">
name here
<div class="activityExtra">
<p>extra</p>
</div>
</div>
<div class="activityIsUsed">checkbox here</div>
</div>
<div class="activityToggle"></div>
</div>