Je vais avoir un de ces jours où ne fonctionne pas ...opérateur ternaire Javascript ne fonctionne pas comme prévu
la logique la plus simple Lorsque je clique sur un lien (id=show-additional-info
) pour afficher le contenu caché, je suis en essayant de passer la classe d'une icône:
$(document).ready(function(){
$("#show-additional-info").on('click', function() {
console.log('---------------');
var iconToggle = $('#additional-info').attr("aria-expanded");
var active_icon = iconToggle
? 'fa fa-chevron-circle-right'
: 'fa fa-chevron-circle-down';
$('#icon-toggle').attr("class", active_icon);
// show state of trigger event, ternary operator, and affected element class
console.log('additional-info.aria-expanded: ' + iconToggle);
console.log('active_icon: ' + active_icon);
console.log('icon-toggle.class: ' + $('#icon-toggle').attr("class"));
});
});
le journal de la console affiche le premier état comme non défini, qui est prévu, et devrait être Falsey. Avec des clics répétés, je vois l'état aria-expanded
bascule d'attribut entre vrai et faux. Mais l'opérateur ternaire n'est pas attribuer des valeurs que je pense:
---------------
additional-info.aria-expanded: undefined
active_icon: fa fa-chevron-circle-down // <-- correctly assigns state.
icon-toggle.class: fa fa-chevron-circle-down
---------------
additional-info.aria-expanded: true
active_icon: fa fa-chevron-circle-right // <-- correctly changes state.
icon-toggle.class: fa fa-chevron-circle-right
---------------
additional-info.aria-expanded: false
active_icon: fa fa-chevron-circle-right // <-- should be circle down!
icon-toggle.class: fa fa-chevron-circle-right
---------------
additional-info.aria-expanded: true
active_icon: fa fa-chevron-circle-right
icon-toggle.class: fa fa-chevron-circle-right
---------------
additional-info.aria-expanded: false
active_icon: fa fa-chevron-circle-right // <-- should be circle down!
icon-toggle.class: fa fa-chevron-circle-right
La partie html fonctionne comme prévu, et ne semble pas être impliqué dans ce comportement inattendu, mais par souci d'exhaustivité, voici:
<i id="icon-toggle" class="fa fa-chevron-circle-right" aria-hidden="true"></i> <a id="show-additional-info" href="#additional-info" data-toggle="collapse">Additional Batch Info</a><br><br>
<div>
<ul id="additional-info" class="list-unstyled collapse">
<!-- stuff... --->
</ul>
</div>
Pour la vie de moi, je ne peux pas voir ce que je fais mal avec l'opérateur ternaire. Un autre ensemble d'yeux serait apprécié!
C'est une solution beaucoup mieux - éviter complètement le ternaire inutile. –
Beaucoup plus élégant; Je vous remercie. Cela ne répond pas à ma question, mais cela résout mon problème. :) +1 –
Et parce que c'est une bien meilleure façon de le faire, marquée comme une réponse acceptée. –