オン/オフを切り替える要素が表示されているかどうか、または「:visible」セレクターを使用していないかどうかを確認して、リンク コントロールの不透明度を切り替えようとしています。次のマークアップがあります:-
<div class='btns'></div>
<p class='text'>Hello world</p>
このjQueryを使用すると:-
var text = $('.text');
text.hide();
var btn = $('<a>', {
'href': '#',
'text': 'click me',
'click': function(e){
e.preventDefault();
text.slideToggle();
var opacity = text.is(':visible').length ? 1 : .5;
$('.btns').animate({
'opacity': opacity
});
}
});
$('.btns').append(btn);
リンクが最初にクリックされると、リンクは正しく半分の不透明度にフェードしますが、その後のクリックでは不透明度は変わりません。これはjsFiddleで実際に確認できます。
「:visible」セレクターがさらにクリックすると失敗するのはなぜですか? これに対するより良いアプローチはありますか?
これがここですでに回答されている場合はお詫びしますが、私の特定の質問に対する回答を見つけることができませんでした.