jQuery if语句来检查可见性

Tom*_*arz 46 jquery if-statement show hide visible

我正在尝试编写一个隐藏/显示div的脚本,具体取决于其他元素的可见性.当我点击其他元素时,应该执行该操作.这是我到目前为止所写的内容:

$('#column-left form').hide();
    $('.show-search').click(function() {
        $('#column-left form').stop(true, true).slideToggle(300);
        if( $('#column-left form').css('display') == 'none' ) {
            $("#offers").show();
        } else {
            $('#offers').hide();
        }
    });
Run Code Online (Sandbox Code Playgroud)

它隐藏了div,但是当我隐藏表单时它不会回来.对任何帮助都会很有帮助:)

编辑:

好吧,我已经设法通过写这个来达到预期的效果:

$('#column-left form').hide();
    $('.show-search').click(function() {
        if ($('#column-left form').is(":hidden")) {
            $('#column-left form').slideToggle(300);
            $('#offers').hide();
        } else {
            $('#column-left form').slideToggle(300);
            $("#offers").show();
        }
    });   
Run Code Online (Sandbox Code Playgroud)

我不知道它是否写得正确但是有效;)谢谢大家的帮助!

Thi*_*ter 121

您可以.is(':visible')用来测试某些东西是否可见并.is(':hidden')测试相反的东西:

$('#offers').toggle(!$('#column-left form').is(':visible')); // or:
$('#offers').toggle($('#column-left form').is(':hidden'));
Run Code Online (Sandbox Code Playgroud)

参考:

  • "测试是否"意味着它返回一个布尔值;) (5认同)
  • 值得注意的是[jQuery docs](http://api.jquery.com/visible-selector/):`具有可见性:隐藏或不透明度:0的元素被认为是可见的,因为它们仍然消耗布局中的空间. (3认同)

Bas*_*amy 5

是的,您可以.is(':visible')在 jquery 中使用。但是当代码在 safari 浏览器下运行时 .is(':visible')是行不通的。

所以请使用下面的代码

if( $(".example").offset().top > 0 )
Run Code Online (Sandbox Code Playgroud)

上面的行也适用于 IE 和 safari。