我正在尝试编写一个JS函数(使用rails中的原型),当li被鼠标悬停时,它将在li中显示隐藏的div。每个L1具有唯一的ID号码,就像这样:Javascript悬停内容显示
<li id="100">
<div style="display:none;" id="hover-display-content">Content</div>
<div style="display:none;" id="more-hover-display-content">Content</div>
<div style="display:none;" id="even-more-hover-display-content">Content</div>
</li>
我不知道如何去,虽然这样做,尤其是在JS只显示该特定李隐藏elemenst。
我想是这样的:
Event.observe(window, 'load', function() {
Event.observe($("li"), 'mouseover', function() {
var id = readAttribute("id")
id.getElementById("hover-display-content").style.display = "inline";
id.getElementById("more-hover-display-content").style.display = "inline";
id.getElementById("even-hover-display-content").style.display = "inline";
});
Event.observe($("li"), 'mouseout', function() {
var id = readAttribute("id")
id.getElementById("hover-display-content").style.display = "none";
id.getElementById("more-hover-display-content").style.display = "none";
id.getElementById("even-hover-display-content").style.display = "none";
});
});
但它似乎并不奏效。我哪里错了?
编辑:
我现在使用:
Event.observe(window, 'load', function() {
$$('li').invoke('observe', 'mouseover', function(event) {
this.children[0].toggle();
});
$$('li').invoke('observe', 'mouseout', function(event) {
document.children[0].toggle();
});
});
这部分工作,但我的代码如下所示:
<ul>
<li>
<div style="display:hidden;">Hidden Div</div>
<div>More content that isn't hidden</div>
</li>
</ul>
当我侧翻里它显示隐藏的div,但是如果我翻转第二个div,它会再次隐藏注释,即使这个div在li中。为什么?
其实我的元素确实以一个前缀开始,我只是为了简洁起见而将它取出。 – goddamnyouryan 2010-10-29 05:22:57
@Ryan:当你选择并采取行动时很重要,这不是一件好事情......可能希望将代码逐字回传,减去保密的事情。 – prodigitalson 2010-10-29 05:25:39