不能fadeOut跨度或图像但我可以fadeOut DIV?

时间:2011-04-24 05:55:16

标签: javascript

javascript中的新手..需要一些帮助。

我有一个SPAN或IMG,我想使用javascript fadeOut。但是当我这样做时没有任何反应:

// HTML
<span id='test_one'>Span Text Here</span>
<img src='img_src_here' id='test_two'>

// JavaScript
$(test_one).fadeOut();
$(test_two).fadeOut();

但如果我这样做,它就能正常运作:

// HTML
<div id='test_one'>Span Text Here</div>

// JavaScript
$(test_one).fadeOut();

我只是犯或者是一个愚蠢的错误,还是我疯了?

感谢
库尔顿

5 个答案:

答案 0 :(得分:3)

假设你正在使用jQuery,你的选择器是不正确的:

$('#test_one').fadeOut();

请注意,它应该是一个字符串(所以单引号或双引号)并使用'#'来按id选择。 Documentation of selectors can be found on the jQuery site

这应该有效:

// HTML
<span id='test_one'>Span Text Here</span>
<img src='img_src_here' id='test_two'>

// JavaScript
$('#test_one').fadeOut();
$('#test_two').fadeOut();

修改

至于为什么它适用于div而不是imgspan,我并不完全清楚,但正如@Steve指出的那样,可以通过使用他们的id作为全局变量。但是,这是非标准行为,只有一些浏览器(臭名昭着的IE)执行元素id到全局命名空间的映射。 IE还允许通过getElementById()获取命名元素!请参阅thisthis。我建议不要依赖这种行为。

答案 1 :(得分:3)

首先,您使用的是哪个库? jQuery的? (fadeOut()方法不是内置于JavaScript中。)

尝试将<span><img>的CSS属性设置为display: blockdisplay:inline-block。这应该使淡出效果。它适用于<div>元素的原因是默认情况下它是一个块元素。默认情况下,<span><img>元素以内嵌方式显示。

答案 2 :(得分:1)

您必须像这样有效地使用选择器 对于“id”使用:

$('#myId').fadeOut();

对于这样的类:

$('.myClass').fadeOut();

依旧......

答案 3 :(得分:1)

在你的风格中添加:

span#test_one { display:inline-block; }

当然:

  $("#test_one").fadeOut(); 

您提供的代码仅适用于IE。

答案 4 :(得分:0)

我认为这是一个愚蠢的错误(我们都做了),你的选择器应该是$('#test_two')

请注意:http://jsfiddle.net/ku8sa/