JQuery:没有选择器被忽略?

时间:2013-02-01 21:19:18

标签: jquery

不知道我是否错误地使用了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>

1 个答案:

答案 0 :(得分:3)

@ Alexander对您的代码所做的描述是正确的。您匹配的<body>元素没有id logo。由于您只有一个body标签,并且没有标识ID,因此您的选择器会选择您的正文标记。

执行您要执行的操作的一种方法是将处理程序附加到正文,但随后阻止事件在徽标上冒泡。这看起来像这样:

$('body').click(function(){ 
  alert('hi');
});

$("#logo").click(function(e){
    e.stopPropagation();
});

http://jsfiddle.net/jJyaA/1/