不知道我是否错误地使用了not选择器,但是我想要点击所有内容来执行与not选择器中的id不同的操作。
这些都没有奏效,点击徽标时会收到提醒:
$('body').not('#logo').click(function(){
alert('hi');
});
$('body:not(#logo)').click(function(){
alert('hi');
});
和html:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type='text/javascript'>
$(document).ready(function(){
$('body').not('#logo').click(function(){
alert('hi');
});
});
</script>
</head>
<body>
<div style='width:900px; margin:0 auto; background-color:red; height:600px;'>
<div id='logo' style='background-color:black; width:200px; height:200px;'>
</div>
</div>
</body>
</html>
答案 0 :(得分:3)
@ Alexander对您的代码所做的描述是正确的。您匹配的<body>
元素没有id
logo
。由于您只有一个body标签,并且没有标识ID,因此您的选择器会选择您的正文标记。
执行您要执行的操作的一种方法是将处理程序附加到正文,但随后阻止事件在徽标上冒泡。这看起来像这样:
$('body').click(function(){
alert('hi');
});
$("#logo").click(function(e){
e.stopPropagation();
});