Я пытаюсь написать функцию JS (используя прототип в рельсах), которая будет показывать скрытые div в li при наведении мыши. Каждый ли имеет уникальный идентификатор, который представляет собой число, например:
<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 показывает только скрытый элемент для этого конкретного кода li.
Я думаю что-то вроде:
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";
});
});
Но, похоже, это не работает. Куда я иду не так?
Edit:
Я сейчас использую:
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>
Когда я переворачиваю li, он отображает скрытый div, однако, если я переворачиваю второй div, он снова скрывает комментарий, даже если этот div находится в li. Почему?