Jquery: выпадальнае меню звычай знікаць пасля націску па-за меню

Я пачатковец у JQuery, і я гляджу на код Google, каб стварыць сваю кнопку «Больш падрабязна». Я атрымаў гэта працуе атм, але адзіны спосаб зрабіць выпадальны знікнуць, гэта націснуць на кнопку «More» зноў. Ці ёсць спосаб, я магу дадаць, каб змяніць гэта, так што любы пстрычка па-за выпадальнага меню непасрэдна не заплюшчыць яго? Дзякуй за разуменне!

http://jsfiddle.net/rKaPN/1/

4

4 адказы

Звяжыце падзея пстрычкі на HTML, каб захапіць любы пстрычка зрабіў, і зрабіць гэта схаваць меню

$("html").click(function() {
  menu.find('.active').removeClass('active');
});

Then override that on your menu's click event using .stopPropagation();

menu.find('ul li > a').bind('click', function (event) {
  event.stopPropagation();

Fiddle: http://jsfiddle.net/rKaPN/12/

7
дададзена
не вельмі добрае рашэнне, таму што на кожны клік гэта будзе рабіць шмат непатрэбнай працы кожны раз, калі меню ўжо скрыты
дададзена аўтар Rajat Gupta, крыніца
Вялікі дзякуй, цаню дапамогу
дададзена аўтар trying_hal9000, крыніца

Вы можаце дадаць гэта таксама, так што карыстальнік не павінен пстрыкнуць

$("body:not(.menu)").hover(function(){ $(".menu").find('.active').removeClass('active');})
1
дададзена
добра я гэта вельмі люблю таксама будзе Абарону трымаць гэта пакуюць мне трэба яго ўніз па дарозе
дададзена аўтар trying_hal9000, крыніца

На адкрыццё меню, стварэнне празрыстага накладання DIV той жа шырыні і вышыні акна. Па пстрычцы гэтай DIV, закрыць меню і знішчыць DIV.

0
дададзена

Замест таго, каб правяраць кожны клік на Йот элеменце HTML можна прывязаць падзея размыцця да пэўнага пункту меню, калі вы зрабіць яго актыўным, каб затым выключыць яго, калі падзея размыцця абпальвае. Замяніць гэтыя некалькі радкоў:

  //displaying the drop down menu
  $(this).parent().parent().find('.active').removeClass('active');
  $(this).parent().addClass('active');

з гэтым:

  //displaying the drop down menu
  $('.active').removeClass('active');
  $(this).parent().addClass('active');
  $(this).blur(function() {
      $('.active').removeClass('active');
  });
0
дададзена