2

ページ内の別の場所をクリックしたときにdivを非表示にしたい。このために、私は持っています:

$(document.body).observe('click', function(e){
    if(e.target.id != 'myDiv') {
        $('myDiv').hide();
    }
});

正常に動作します。唯一の問題は、このdiv内に他の要素があり、それらをクリックすると#myDivも閉じることです。このdiv内の何かをクリックしても、非表示がトリガーされないようにする必要があります。周りを検索した後、jQueryでこれを行う方法についての答えをここで見つけました:https ://stackoverflow.com/a/12222263/548524 。ただし、これをPrototypeで機能させることはできないようで、明らかにhas()はここでは無効です。

どんな助けでも大歓迎です!

4

2 に答える 2

2
document.observe('click', function(event) {
  if (!event.findElement('#myDiv')) {
    $('myDiv').hide();
  }
});
  1. 必要はありません$(document.body)-すでにドキュメント全体の監視があります
  2. イベントから要素を見つける方法があります
于 2012-11-30T20:36:38.267 に答える
1

'up'関数を使用します。

$(document.body).observe('click', function(e){
    if(e.target.id != 'myDiv' && !$(e.target.id).up('#myDiv')) {
        $('myDiv').hide();
    }
});
于 2012-11-30T13:42:45.857 に答える