У меня есть некоторые элементы, которые я могу выбрать с помощью функции .click (), и они стали подсвеченными.Над ними есть меню с некоторыми действиями.Я хочу отменить выделение, когда нажимаю любой элемент, но не меню.
Структура:
<body>
<div id="menu">
</div>
<div id="elements">
/* selectable elements here */
</div>
</body>
Исполняемый пример
$().ready(function(){
$("#elements a").click(function(){
$(this).css('color', 'red');
return false;
});
$(document).click(function(e) {
if ( $(e.target).closest('#menu').length === 0 ) {
$("#elements a").css('color', 'blue');
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="menu">
<a href="#">Menu 1</a>
<a href="#">Menu 2</a>
<a href="#">Menu 3</a>
</div>
<div id="elements">
<a href="#">Element 1</a>
<a href="#">Element 2</a>
<a href="#">Element 3</a>
</div>
<div>
Click any element to highlight it. Click anywhere to reset highlighting. Click menu to keep highlighting.
</div>
Jsfiddle
Я пытался связать $("body *").not("#menu").click(...);
, но когда я нажимаю на #menu, то событие onclick тела также сработало, потому что #menu - это дети тела.