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

Events 子元素的Prototype.js event.target.id,events,onclick,prototypejs,hide,Events,Onclick,Prototypejs,Hide,我想在单击页面中的其他位置时隐藏一个div。为此,我有: $(document.body).observe('click', function(e){ if(e.target.id != 'myDiv') { $('myDiv').hide(); } }); 工作正常,唯一的问题是在这个div中有其他元素,单击它们也会关闭#myDiv。我想要它,这样点击这个div里面的任何东西都不会触发隐藏。在四处搜索之后,我在这里找到了关于如何使用jQuery执行此操作的答案

我想在单击页面中的其他位置时隐藏一个div。为此,我有:

$(document.body).observe('click', function(e){
    if(e.target.id != 'myDiv') {
        $('myDiv').hide();
    }
});
工作正常,唯一的问题是在这个div中有其他元素,单击它们也会关闭#myDiv。我想要它,这样点击这个div里面的任何东西都不会触发隐藏。在四处搜索之后,我在这里找到了关于如何使用jQuery执行此操作的答案:。然而,我似乎无法在原型中实现这一点,显然has()在这里是无效的

非常感谢您的帮助

使用“向上”功能:

$(document.body).observe('click', function(e){
    if(e.target.id != 'myDiv' && !$(e.target.id).up('#myDiv')) {
        $('myDiv').hide();
    }
});
  • 您不需要
    $(document.body)
    -已经有了
  • 有一种方法可以

  • 谢谢,我理解它应该如何工作,但是上面的代码抛出了一个错误:无法调用null的方法'up'。还尝试使用$(e.target.id).up()!='myDiv'但是我得到了相同的错误,所以不确定语法中是否缺少什么东西或者为什么它不起作用。为了获得$(event.target).up()的id,我不得不使用$(event.target).up().readAttribute('id')现在可以工作了,但是.up()只选择第一个祖先。看起来我们同时添加了注释!是的,你说得对,它现在工作得很好,非常感谢!
    document.observe('click', function(event) {
      if (!event.findElement('#myDiv')) {
        $('myDiv').hide();
      }
    });