JQuery арқылы дененің кез келген жеріне басу арқылы ашылатын терезені жабу әдісі

Ықтимал көшірме:    Jquery: ашылмалы мәзір сырттан басқаннан кейін жоғалады мәзірдің

I recently found a tutorial on creating Google like black menu bar with the dropdown

ашылмалы терезе ашылғанда, «көп» түймесін басқан кезде, ашылмалы мәзірді қайтадан жасыру үшін «көп» батырмасын басу керек

бірақ дененің қандай да бір жеріне басу арқылы ашылмалы сөзді жабуды қалаймын, бәрі маған қалай екенін білдіруге болады

http://jsfiddle.net/VrmnA/

Алдын-ала рақмет

2
Бұл қазірдің өзінде мұнда жауап берілді, бұл жерде jsfiddle.net/FNPY4
қосылды автор Praveen Gowda I V, көзі
Мұнда қараңыз: jquery-drop-down-menu-wont-disappear-after-click-outside-& & zwnj; of-menu
қосылды автор GregM, көзі

3 жауаптар

Негізгі логика келесідей болуы керек: егер мәзірдің сыртында басылса, ашылмалы мәзірді жабыңыз:

var dropdown = $('dropdown_selector');
$(document).click(function(e){
    if(e.target === dropdown.get(0))
        {
           //hide dropdawn code here
        }
});

Мұнда тірі демо бар:

http://jsfiddle.net/gion_13/VrmnA/7/

P.S. : демо соңғы jQuery нұсқасында жұмыс істейді

3
қосылды

Егер сіз негізгі мазмұнды идентификаторға айналдырсаңыз, (төмендегі мысалда мен осы «мазмұнның» идентификаторын қосқан болсам), онда сіз ол басылғанда кез келген белсенді мәзірлерді жаба аласыз:

$('#content').click(function() {
        $('.active').removeClass('active');
});

Қосылған кезде белсенді сыныпты алып тастау үшін баламалы түрде blur оқиғасын байланыстырыңыз:

  //hiding drop down menu when it is clicked again
  if ($(this).parent().hasClass('active')) {
    $(this).parent().removeClass('active');
  }
  else {
    //displaying the drop down menu
    $('.active').removeClass('active');
    $(this).parent().addClass('active');
    $(this).blur(function() {
        $('.active').removeClass('active');
    });
  }

Жаңартылған jsFiddle.

1
қосылды
@ user1018414 - дәл жұмыс істемейді, тек jsFiddle сілтемесін көрдім және дұрыс деп ойлаймын ба?
қосылды автор Andy Rose, көзі
оның жұмыс істемейді
қосылды автор user1018414, көзі
Мен jsFiddle-ден тырысып, дененің кез-келген жеріне шерткенде, ашылмалы жабық емес
қосылды автор user1018414, көзі

Ironically, this exact same question was asked recently: Jquery: drop down menu wont disappear after clicking outside of menu

Пайдаланушы сіз басу оқиғасын html тегіне түзетулеріңізді ашуға мүмкіндік беретін түсініктеме береді, бұл ашылмалы терезені жабатын және ашылмалы тізімдегі элементті басқан кезде, ашылатын терезені бірден тоқтату жолын қалай тоқтатуға болады? e.stopPropagation() .

0
қосылды
Міне, мәселе қазірдің өзінде жабық және осы уақытқа қарай әртүрлі жауаптар берілді, болашақ пайдаланушылар да пайда көре алады.
қосылды автор Joey, көзі
иә, мен түсіндім, бұл сіз ойлайсыз, бұл жою мәселесі болып табылады қайталау дұрыс?
қосылды автор user1018414, көзі