$(element).is(':visible')始终为false

时间:2011-09-16 15:24:54

标签: jquery

我有以下示例:http://jsfiddle.net/LAMdV/

HTML:

<div id="imageSlider">
    <span class="info" id="info1">
        hello world
    </span>
</div>

jQuery的:

$('#imageSlider .info').click(function () {
    var i = $(this).attr('id');
    i = i.replace('info', '');

    if ($('#imageSliders .info#info' + i).is(':visible')) {    
        alert("hide");
    } else {
        alert("show");
    }
});

为什么is:visible的结果总是显示为假?尽管它从一开始就可见! (在我的实际场景中,它先前已隐藏,然后显示)

4 个答案:

答案 0 :(得分:5)

当你的选择器使用“#imageSliders”(复数)时,你的标记有id“imageSlider”。

答案 1 :(得分:2)

可能是因为id是imageSlider而你的jQuery有#imageSliders(复数)。

答案 2 :(得分:1)

你的语法混乱了。

 if ($('#imageSliders .info#info' + i).is(':visible')) { ... }

类名在id之后引用。但是id是最快的选择器,所以只需将info {number}作为主选择器

 if ($('#info' + i).is(':visible')) { ... }

但是,由于这是在函数调用中,您可以使用this

 if ($(this).is(':visible')) { ... }

进一步解释何时使用类与id结合使用。举例说明可以使用活动类装饰的页面上的id。

$("#uniqueid")

vs

$("#uniqueid.active")

答案 3 :(得分:0)

它们都不是。 imageSliders应该是imageSlider