【发布时间】:2011-07-18 12:20:36
【问题描述】:
我有一些元素可以使用 .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>
我尝试绑定$("body *").not("#menu").click(...);,但是当我点击#menu 时,body 的onclick 事件也会触发,因为#menu 是body 的子项。
【问题讨论】:
-
如果您能提供任何 jsfiddle 或可执行示例,将会很有帮助。
-
@Black,给你jsfiddle.net/3aqgLpp6/2
标签: javascript jquery click css-selectors