在jQuery中捕捉鼠标事件的最佳实践<;部门>;s

在jQuery中捕捉鼠标事件的最佳实践<;部门>;s,jquery,Jquery,我正在寻找在HTMLS中捕获鼠标事件的最佳方法。当你有复合div,有文本、图像和其他div时,我要做的就是在所有的东西上加一层来捕捉鼠标 这可能会导致进一步的问题,因为这一层可以避免您捕获构图的其他部分,迫使您扩展此方法 我显然受到了我过去作为flash程序员的影响,当时你不得不使用Sprite.graphics做同样的事情 我通常这样做: <div class="photo-element"> <div class="photo-element-image">&l

我正在寻找在HTMLS中捕获鼠标事件的最佳方法。当你有复合div,有文本、图像和其他div时,我要做的就是在所有的东西上加一层来捕捉鼠标

这可能会导致进一步的问题,因为这一层可以避免您捕获构图的其他部分,迫使您扩展此方法

我显然受到了我过去作为flash程序员的影响,当时你不得不使用Sprite.graphics做同样的事情

我通常这样做:

<div class="photo-element">
   <div class="photo-element-image"><img src="..."/></div>
   <div class="photo-element-title">Some Title</div>
   <div class="photo-element-mouse-wrapper"></div>
</div>
.photo-element-mouse-wrapper
{
    width:70px;
    height:70px;    
}

.photo-element-title
{
    position:absolute;
    top: 5px;
    ...
}

.photo-element-image
{
    position:absolute;
    top: 0px;
    ...
}

.photo-element
{
    width:70px;
    height:70px;
    position:relative;
}
最后,jQuery将是:

$('.photo-element-mouse-wrapper').mouseover(function() {
    //code
});
我的问题是:


这是捕获鼠标事件的最佳方法吗?

如果要捕获所有子元素上的事件,请在父元素上附加事件处理程序,因为事件是在JavaScript的DOM树中冒泡的

试试这个

$('.photo-element').mouseover(function(){
    //Code
});

如果您想捕获所有子元素上的事件,那么在父元素上附加事件处理程序,因为事件是在JavaScript中从DOM树中冒泡出来的

试试这个

$('.photo-element').mouseover(function(){
    //Code
});

mouseover
mouseout
事件会出现气泡,因此,例如,如果鼠标离开一个div,则会在div及其所有父对象上触发一个
mouseout
事件,直到主体,除非发生此情况


您是否知道,以及?它们都会在进入/退出元素时触发,但不会冒泡。因此,如果您退出一个div,则只会触发一个
mouseleave
,仅在该div上触发
mouseover
mouseout
事件气泡,因此,例如,如果鼠标离开一个div,则会在div及其所有父对象上触发
mouseout
事件,除非发生此情况


您是否知道,以及?它们都会在进入/退出元素时触发,但不会冒泡。因此,如果退出一个div,只会触发一个
mouseleave
,只会在该div上触发,这就是我将如何执行的操作-尽管我会将其包装在$(document).ready()中,以确保已首先加载DOM。我还将其设置为捕获整个DOM元素上的事件,例如带有class photo元素的div。代码示例:

$(document).ready(function() {
      $('.photo-element').mouseover(function() {
           //code
      });
});

这就是我要做的——尽管我会将它包装在$(document).ready()中,以确保首先加载了DOM。我还将其设置为捕获整个DOM元素上的事件,例如带有class photo元素的div。代码示例:

$(document).ready(function() {
      $('.photo-element').mouseover(function() {
           //code
      });
});

这是可行的,但您应该访问jquery的站点。下面是“photo元素鼠标包装器”的两个示例

用于悬停事件(mouseenter和mouseleave)

点击事件

$('.photo-element-mouse-wrapper').click(function(e){
    e.stopPropagation(); // prevents event bubling
    //write code for to take action when mouse clicks the element
})

还有其他可用的鼠标事件,如mouseover、mousedown e.t.c。您可以在上找到更多的示例,这是学习jquery的更好地方。

这很有效,但您应该访问jquery的网站。下面是“photo元素鼠标包装器”的两个示例

用于悬停事件(mouseenter和mouseleave)

点击事件

$('.photo-element-mouse-wrapper').click(function(e){
    e.stopPropagation(); // prevents event bubling
    //write code for to take action when mouse clicks the element
})
还有其他可用的鼠标事件,如mouseover、mousedown e.t.c。您可以在上找到更多的示例,这是学习jquery的更好地方