jQuery hasClassに問題があります。jQuery hasClassおよびif
$(document).ready(function() {
var body = $('body'),
leftPane = $('.pane-left');
leftPane.on('click', function() {
body.removeClass('left-closed');
body.addClass('left-open');
$('.pane-left h2').fadeIn(600);
setTimeout(function() {
rightPane.fadeOut(0);
$('.pane-left-wrap').fadeIn(100);
$('.pane-left-wrap .secondary-nav li:first-child').fadeIn(100);
$('.pane-left-wrap .secondary-nav li:nth-child(2)').fadeIn(600);
$('.pane-left-wrap .secondary-nav li:nth-child(3)').fadeIn(1200);
$('.pane-left-wrap .secondary-nav li:nth-child(4)').fadeIn(1800);
$('.pane-left-wrap .secondary-nav li:nth-child(5)').fadeIn(2400);
}, 600);
});
if(body.hasClass('left-open')) {
leftPane.on('click', function() {
body.removeClass('left-open');
body.addClass('left-closed');
$('.pane-left h2').fadeOut(600);
});
}
});
クリックすると左ペイントと左ペインが自分のbodyタグに追加されます。次に私は再びクリックしますが、if()内のコードに到達できません。何故ですか?
「if」条件はページの読み込み時にのみ実行され、クリックがクラス「left-open」を追加した後ではありません。 – Matt
条件付きバインディングのかわりに、バインディング内の状態をチェックして、ロジックを実行するかどうかを確認します。または、可能であれば、それを子セレクタの一部として条件付きチェックを含むデリゲートバインディングに変更します。 – Taplar
hasClassの 'if'はクリックハンドラの中になければなりません。つまり、クリックハンドラを1つ持ち、クラス内でクラスをチェックしてください。 – Huangism