Javascript 当块外发生click(或mouseover)事件时,如何调用方法?

Javascript 当块外发生click(或mouseover)事件时,如何调用方法?,javascript,javascript-events,Javascript,Javascript Events,因此,我举了一些例子 第一个,在facebook上:它是一个三角形(在右上角),带有下拉菜单(其中放置了“注销”、“帮助”、“帐户设置”按钮)。所以,如果我将光标放在这个菜单之外,它将被隐藏 我做到了(在mouseover上隐藏块),但当我将光标放在子元素上时,“mouseover”事件会触发 第二个是vk.com盒子。如果我在这个框外单击,它将被隐藏(如果所有输入都是空的) 我做错了: <div id="box_layer" onclick="this.style.display='n

因此,我举了一些例子

第一个,在facebook上:它是一个三角形(在右上角),带有下拉菜单(其中放置了“注销”、“帮助”、“帐户设置”按钮)。所以,如果我将光标放在这个菜单之外,它将被隐藏

我做到了(在mouseover上隐藏块),但当我将光标放在子元素上时,“mouseover”事件会触发


第二个是vk.com盒子。如果我在这个框外单击,它将被隐藏(如果所有输入都是空的)

我做错了:

<div id="box_layer" onclick="this.style.display='none';">
    <div id="box">Boxboxbox</div>
</div>

盒子
第一,我在谷歌上搜索了
event.cancelBubble=true
(也是
e.stopPropagation()
),但我不知道如何使用它(因为我是如何做的,它不起作用)

再次为我的英语不好感到抱歉。:)


谢谢。

如果我正确理解了你的帖子,我认为你需要使用鼠标出而不是鼠标盖

function forMouseOut(){
    e=window.event;
    if(!e) e=window.Event;
    if(your_block.contains(e.target || e.toElement)) return;// Prevents closing when over child elements
     /* check the inputs and return if empty */
     your_block.style.display='none';
     return;
}

那么我想您根本不需要onclick,因为
您的\u块
将在鼠标指针移出后立即关闭。

对于我创建的框类,请关闭它的函数:

close: function(e,$type,$parameters) { //e is the event
  var el=e.target||e.srcElement;
  if (el.id=='box_wrap' || el.id=='box_layer' || el.id=='closebox_button') {
    box.chooseLayer($type).getElementsByTagName('div')[0].innerHTML=null;
    box.closeLayer($type);
  }
}

jQuery的
mouseover
mouseout
方法对您有帮助吗?我想在没有jquery的情况下解决这个问题。首先,您必须将事件处理程序放入函数中。这给了你更多的选择来处理事件。是的,当然。我已经编写了有问题的代码,例如:)所以,有一个问题:哪个事件应该首先工作。当我有一个带有mouseover事件的块时,当我把光标放在子元素上时,这个mouseover事件会触发(?)。谢谢。但是onclick我需要放在盒子里(所以,我不会用鼠标来关盒子:)。但我已经做到了(答案中的代码)。“如果我在这个框外单击,它将被隐藏”我翻译了这句话,因为你想在单击框外时关闭这个框。我对jQuery不是很熟悉,但如果代码正常工作,它就是一个好代码。无论如何,事件目标应该是这里的主要问题。