让jQuery mouseout事件从所有子元素触发

时间:2009-05-31 19:25:16

标签: jquery events mouseout propagation

我在Div中有一个表,包含8个图像,我想为表或div发出一个mouseout事件,但它不会触发。我猜这是因为鼠标实际上是离开了每个图像,或者是td,还是tr等...有没有办法让整个表的mouseout事件向上传播,以便它甚至被触发从孩子的元素?标记是直截了当的:

<div id=container>
  <table id="tbl">
    <tr>
      <td><img src=""></td>
      <td><img src=""></td>
      <td><img src=""></td>
      <td><img src=""></td>
    </tr>
    <tr>
      <td><img src=""></td>
      <td><img src=""></td>
      <td><img src=""></td>
      <td><img src=""></td>
    </tr>
  </table>
</div>

我的jQuery代码是:

$("#tbl").mouseout(function(){
  alert("out home");
});

我无法触发图像的各个mouseout事件,因为有时会在它们上面放置绝对元素,导致mouseout事件过早触发。

3 个答案:

答案 0 :(得分:2)

应该是:

$("#tbl").mouseout(function(){
  alert("out home");
});

你错过了“#”。 如果您只想要图像,请尝试:

$("#tbl >img").mouseout(function(){
  alert("out home");
});

PS。您是否考虑使用$(“...”)。hover(),而不是?

答案 1 :(得分:0)

你不应该使用#tbl来选择表吗?

$("#tbl").mouseout(function(){
  alert("out home");
});

答案 2 :(得分:0)

使用mouseleave事件,它具有完全相同的功能,但不会触发子元素。

$("#tbl").bind("mouseleave",function(){
  alert("out home");
});