...私は隠されたコンテンツを表示するためのリンク(id=show-additional-info
)をクリックするとJavascriptの三項演算子は、私が最も単純な論理が働いていない当時の一つ抱えている
、私は期待通りに動作しませんアイコンのクラスを切り替えしようとしている:
$(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"));
});
});
コンソールログが予想され、未定義のように、第1の状態を示し、falseyであるべきです。繰り返しクリックすると、真と偽の間で、aria-expanded
属性の状態が切り替わります。
---------------
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
HTML部分が期待どおりに動作しており、この予期しない動作に関与していると表示されませんが、完全を期すために、ここにある:三項演算子は、値を代入されていませんが、私は期待通り:
<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>
私の人生にとって、私は三項演算子で間違っているのか分かりません。目の別のセットは高く評価されるだろう!
これは、はるかに優れたソリューションです - 完全に不要な三元を避けます。 –
もっと優雅です。ありがとうございました。それは私の質問に答えることはできませんが、それは私の問題を解決します。 :) +1 –
これははるかに良い方法ですので、受け入れられた答えとしてマーク。 –