Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   IE6 event bubbling (https://javascript.ru/forum/events/15694-ie6-event-bubbling.html)

DimaS 09.03.2011 21:14

IE6 event bubbling
 
Есть простое самописное меню:
<div class="b-menu">
                    <!-- main menu -->
                    <div class="b-main-menu">
                        <a href="javascript:void(0);" onmouseover="menu.showSubMenu('item1');">item1</a>
                        <a href="#">item2</a>
                        <a href="javascript:void(0);" onmouseover="menu.showSubMenu('item2');">item3</a>
                    </div>
                    <div class="menu-delimiter"></div>
                    <!-- sub menu -->
                    <div class="b-sub-menu hidden" id="item1">
                        <a href="design-projects.html">subitem1</a>
                        <a href="programming-projects.html">subitem2</a>
                    </div>
                    <div class="b-sub-menu hidden" id="item2">
                        <a href="about-us.html">subitem3</a>
                        <a href="technologies.html">subitem4</a>
                        <a href="contact.html">csubitem5</a>
                    </div>
                    <!-- sub menu -->
                    <div class="clear"></div>
                </div>


Код инициализации меню:
var menu = $('.b-menu').initmenu('item1');


Код самого плагина меню:
(function($) {
    $.fn.initmenu = function(options) {
        
        options =   $.extend({current: ''}, options);
        
        this.each(function(){
            $(this).mouseleave(function(event){
                
                // 1. hide all sub menu
                $('.b-sub-menu').addClass('hidden');
                
                if(options.current != '') {
                    // 2. show current menu    
                    $('#' + options.current).removeClass('hidden');    
                }
                
            })    
        })
        
        
        this.showSubMenu    =   function(idSubMenu){
            
            if(idSubMenu != '') {
                // 1. hide all sub menu
                $('.b-sub-menu').addClass('hidden');
                
                // 2. show current menu    
                $('#' + idSubMenu).removeClass('hidden');
            }
        }
        
        // 1. open current sub menu
        this.showSubMenu(options.current);
        
        return this;
    }
})(jQuery);

Так вот трабл в IE6, а именно когда я убираю фокус с любой из ссылок блока b-main-menu. Event bubbling добирается до события $(this).mouseleave(function(event) в плагине и тот прячет подменю. Не совсем понимаю как это можно пофиксить. Читал много о bubbling, сам механизм понятен. Нашел тему - http://javascript.ru/forum/events/65...plivaniyu.html, однако я не могу в ie6 вообще как-то просмотреть объект event. Подскажите как решить данную проблему?


Часовой пояс GMT +3, время: 10:22.