我有以下示例: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
的结果总是显示为假?尽管它从一开始就可见! (在我的实际场景中,它先前已隐藏,然后显示)
答案 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