document.onclick закрыть, но держать открытым при нажатии меню - PullRequest
0 голосов
/ 29 декабря 2011

Хорошо, у меня есть скрипт выпадающего меню. Это работает нормально, когда все нажатия происходят в самом меню, но когда я щелкаю по меню, раскрывающийся список не закрывается. Я хочу, чтобы меню закрывалось, если пользователь щелкает где-то на экране, который не является фактическим меню.

Я попытался добавить код:

document.onclick = ddMenu_close;

Но тогда это делает меню никогда не открывающимся, потому что оно вызывает «open» через функцию, но затем сразу закрывает его, потому что оно затем вызывает onclick ddMenu_close. Мой скрипт ниже:

<script type="text/javascript">
  function ddMenu() {
    var timeout    = 500;
    var closetimer = 0;
    var ddmenuitem = 0;

    function ddMenu_open(e)
    {
       ddMenu_close();
       var submenu = $(this).find('ul');
        if(submenu){
            ddmenuitem = submenu.css('visibility', 'visible');

        }

    }

    function ddMenu_close()
    {  if(ddmenuitem) ddmenuitem.css('visibility', 'hidden'); }

    function ddMenu_timer()
    { closetimer = window.setTimeout(ddMenu_close, timeout); }

    function ddMenu_canceltimer()
    {  if(closetimer)
       {  window.clearTimeout(closetimer);
          closetimer = null;}}

    $(document).ready(function()
    {  $('#ddMenu > li').bind('click', ddMenu_open);
       $('#ddMenu li ul').bind('click', ddMenu_timer);


    });


    }
    </script>

Так что мне нужно добавить что-то в этот скрипт, которое закроет раскрывающийся список при нажатии на герцогство или окно, но не будет мешать нажатию в меню или раскрывающемся меню. Спасибо за любую помощь.

1 Ответ

1 голос
/ 29 декабря 2011

В ddMenu_open () для привязки $ (document) триггер события клика ddMenu_close (). В ddMenu_close () отмените $ (документ) события click.

это пример:

http://jsfiddle.net/bEPvP/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...