子元素的Prototype.js event.target.id

时间:2012-11-30 13:35:47

标签: events onclick prototypejs hide

我想在点击页面中的其他位置时隐藏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中使用它,显然有()在这里无效。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

document.observe('click', function(event) {
  if (!event.findElement('#myDiv')) {
    $('myDiv').hide();
  }
});
  1. 您不需要$(document.body) - 已经有document-wide observe
  2. find element from event
  3. 有一种方法

答案 1 :(得分:1)

使用'up'功能:

$(document.body).observe('click', function(e){
    if(e.target.id != 'myDiv' && !$(e.target.id).up('#myDiv')) {
        $('myDiv').hide();
    }
});
相关问题