我试图通过检查它打开/关闭的元素是否可见或使用“:visible”选择器来切换链接控件的不透明度。我有以下的标记: -在动态元素上使用jQuery“: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”选择器在进一步点击时失败?有没有更好的方法呢?
道歉,如果这已经在这里回答,但我一直无法找到我的特定问题的答案。
.is()返回一个布尔值,所以var opacity = text.is(':visible')。length? 1:.5;应该是var opacity = text.is(':visible')? 1:.5; – sroes
这就是我的想法,但只是使用text.is(':可见')根本没有工作! – drmonkeyninja
因为文本总是可见的..你总是在设置“不透明度”之前滑动窗口 - 这意味着文本总是可见的..你必须捕捉不透明度,然后再开始slidetoggling或在slidetoggle的回调内 –