Это было покрыто выше; однако, Вы не можете использовать string
в отражении; необходимо использовать String
.
Используйте события mouseenter
и mouseleave
вместо , новое в Prototype 1.6.1 (но не новинка в IE). Для этого вам нужно переместить встроенные обработчики событий из разметки:
<div id="Navigation">
<div id="Drop_Down">
<% include Navigation %>
</div>
</div>
И настроить события в сценарии:
<script>
document.observe('dom:loaded', function() {
$('Navigation')
.observe('mouseenter', function() {
new Effect.toggle('Drop_Down','slide',{duration: 0.8})
})
.observe('mouseleave', function() {
new Effect.toggle('Drop_Down','slide',{duration: 0.8})
})
})
</script>
В отличие от mouseover
и mouseout
, эти события не пузырь из дочерних элементов. Они срабатывают на том элементе, к которому вы их привязываете, что прекрасно решает вашу проблему.
В качестве альтернативного, общего (не зависящего от прототипа) ответа
Это вызвано всплыванием событий. Дополнительная информация, в том числе о том, как отменить его в дочерних узлах, находится здесь: http://www.quirksmode.org/js/events_order.html