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

使用“向上”功能:

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