0

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>
4

1 に答える 1

3

あなたのコードが何をしているのかについての@Alexanderの説明は正しいです。of<body>を持たない要素に一致しています。body タグが 1 つしかなく、ロゴの id がないため、セレクターは body タグを選択します。idlogo

あなたがやろうとしていることを行う 1 つの方法は、ハンドラーを本体にアタッチすることですが、ロゴでイベントがバブリングするのを防ぎます。それは次のようになります。

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

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

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

于 2013-02-01T21:30:13.977 に答える