2014-01-24 3 views
0

Голые со мной Я не эксперт с jQuery. Я создал раскрывающееся меню, первое меню пункта, на которое вы нажимаете, для отображения подменю, и любые подменю внутри этого шоу/скрывать при наведении/зависании. Единственная проблема, которую я имею, я хочу основная навигацию, чтобы закрыть на мыши в любом месте документаjQuery выпадающее меню не закрывается

jQuery(document).ready(function() { 
     jQuery(".mainNav ul li").click(function() { 
      jQuery(this).find("> ul").css({ "opacity": "1", "visibility": "visible", "top": "30px" }); 
      }); 
     jQuery(".sub-menu li").mouseover(function() { 
      jQuery(this).find("> ul").css({ "opacity": "1", "visibility": "visible", "top": "30px" }); 
     }); 
     jQuery('.sub-menu li').mouseout(function() { 
      jQuery(this).find("> ul").css({ "opacity": "0", "visibility": "hidden", "top": "35px"}); 
     });}); 

//the code i tried below 
jQuery('document').click(function() { 
     jQuery(.mainNav ul li).find("> ul").css({ "opacity": "0", "visibility": "hidden", "top": "35px"}); 
    });}); 

    }); 

я предполагаю два клик являются противоречивыми, но я не слишком уверен, знаком с тем, как справиться с этим , Я был бы признателен за помощь

Редактировать. Я перепутал, и выпадающее меню закрывается, если, например, я изменяю событие click на элемент «h1», который находится прямо под ним. Затем я изменил его на .container, и подменю даже не появилось.

+1

Если не 'JQuery (.mainNav уль ли)' 'быть JQuery ('Mainnav уль LI')' – hjpotter92

+0

Ах да, я напечатал, что в Freehand, не копировать/вставить. Благодаря! – user1375823

ответ

1

Вы можете использовать JQuery-х .not или :not

jQuery(document).not(".mainNav ul").click(function() { 
    jQuery(".mainNav ul li").find("> ul").css({ "opacity": "0", "visibility": "hidden", "top": "35px"}); 
});}); 

Вы пропустили некоторые скобки в селекторе, который я добавил, а

У вас также есть дополнительный набор }); и ваша document функция клик не внутри функции готовности. Попробуйте положить его в готовой функции, like so путем удаления }); после mouseout

На стороне записки вы можете использовать $ вместо jQuery если вы хотите

Редактировать

я получил она работать in my jsFiddle используя :not и on("click",... Попробуйте полный JQuery, если только этот фрагмент кода не работает

jQuery(document).on("click", ":not(.mainNav ul, .mainNav ul *)", function() { 
    jQuery(".mainNav ul li").find("> ul").css({ 
     "opacity": "0", 
      "visibility": "hidden", 
      "top": "35px" 
    }); 
}); 
+0

Хм, он по-прежнему не работает = (. Спасибо – user1375823

+1

Удалены цитаты вокруг 'document'. Должен теперь работать –

+0

Будет ли иметь значение, что это для темы wordpress, может быть, поэтому она не вибрирует? где-то, что я должен использовать jQuery вместо $ при работе с wordpress, может быть, это была старая статья? Все еще не работает с удаленными цитатами, черт. – user1375823

1

вы можете попробовать это:

jQuery(document).not('.mainNav ul').click(function() { 
//-----^------^-------you have to remove quotes here. 
Смежные вопросы