Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 在div'上触发警报;老鼠出来了_Jquery - Fatal编程技术网

Jquery 在div'上触发警报;老鼠出来了

Jquery 在div'上触发警报;老鼠出来了,jquery,Jquery,我在这里测试了一些东西,所以请原谅css规则。我在一个div中有一个ul列表,我试图在div的mouseout上触发一个警报,但是每次我mouseoutul中的li项时,警报都会触发。能告诉我背后的原因吗?我想这是因为冒泡,但我不确定 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <

我在这里测试了一些东西,所以请原谅css规则。我在一个div中有一个ul列表,我试图在div的mouseout上触发一个警报,但是每次我mouseoutul中的li项时,警报都会触发。能告诉我背后的原因吗?我想这是因为冒泡,但我不确定

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<style>
#box{
cursor:pointer;width:300px;height:500px;background-color:#F1E0BB;
}

ul#myList{
list-style:none;padding-top:20px;
}

ul#myList li{
font-family:Arial;font-size:20px;font-weight:bold;height:40px;cursor:pointer;border:solid 1px #000;
}
</style>
</head>
<body>

<div id="box">
    <ul id="myList">
        <li>Item 11</li>
        <li>Item 12</li>
        <li>Item 13</li>
        <li>Item 14</li>
        <li>Item 15</li>
    </ul>
</div>


</body>
</html>
使用此处按钮,离开孩子时不会触发:

$('#box').mouseleave(function(){
  alert("ccc");
});
您关于冒泡的假设是正确的,正是那些冒泡的子元素触发了处理程序。从文档中:

mouseleave
事件处理事件冒泡的方式不同于
mouseout
。如果在本例中使用了
mouseout
,那么当鼠标指针移出内部元素时,将触发处理程序。这通常是不受欢迎的行为。另一方面,
mouseleave
事件仅在鼠标离开其绑定到的元素而不是后代时触发其处理程序。因此在本例中,当鼠标离开外部元素而不是内部元素时,将触发处理程序

使用此处按钮,离开孩子时不会触发:

$('#box').mouseleave(function(){
  alert("ccc");
});
您关于冒泡的假设是正确的,正是那些冒泡的子元素触发了处理程序。从文档中:

mouseleave
事件处理事件冒泡的方式不同于
mouseout
。如果在本例中使用了
mouseout
,那么当鼠标指针移出内部元素时,将触发处理程序。这通常是不受欢迎的行为。另一方面,
mouseleave
事件仅在鼠标离开其绑定到的元素而不是后代时触发其处理程序。因此在本例中,当鼠标离开外部元素而不是内部元素时,将触发处理程序


朋友你是个天才,非常感谢!!我必须等到12分钟才能将此标记为已回答bcos。你只花了不到一分钟就回答了!不幸的是,根据Quirksmode的说法,Mousenter和mouseleave只受MSIE的支持:@David-jQuery在所有浏览器中都模拟了它们,所以这在任何地方都适用。mate u r a genius,非常感谢!!我必须等到12分钟才能将此标记为已回答bcos。你只花了不到一分钟就回答了!不幸的是,根据Quirksmode的说法,Mousenter和mouseleave只受MSIE支持:@David-jQuery在所有浏览器中都模拟了它们,所以这在任何地方都适用。