Javascript Jquery:元素上而不是其子元素上的事件的选择器?

Javascript Jquery:元素上而不是其子元素上的事件的选择器?,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我想知道,通过jquery选择器,是否可以将事件绑定到元素上,但不能绑定到其子元素上。实际上,我有两个div,一个在另一个上,处于绝对位置,我想在两个div上检测相同的事件,但不想检测事件是否发生在顶部div的子级上(我的意思是,我想检测事件是否发生在顶部div的透明部分,就像它发生在较低的div上一样) 例如,在这里,#桌面和#应用程序是一对一的,具有相同的固定宽度和高度,我想在#桌面或#应用程序上检测事件,但不在.stuff上 HTML <div id="desktop"> &

我想知道,通过jquery选择器,是否可以将事件绑定到元素上,但不能绑定到其子元素上。实际上,我有两个div,一个在另一个上,处于绝对位置,我想在两个div上检测相同的事件,但不想检测事件是否发生在顶部div的子级上(我的意思是,我想检测事件是否发生在顶部div的透明部分,就像它发生在较低的div上一样)

例如,在这里,#桌面和#应用程序是一对一的,具有相同的固定宽度和高度,我想在#桌面或#应用程序上检测事件,但不在.stuff上

HTML

<div id="desktop">

</div>
<div id="apps">
    <div class="stuff">
        test
    </div>
    <div class="stuff">
        test2
    </div>
</div>
如果选择器无法实现这一点,我正在考虑这样做,效果令人满意:

$("#desktop, #apps").mousemove(function(mouse){
    $("#global stuff").mousemove(function() {
        return false;
    });
    // ...
});

处理程序仅绑定到父元素。问题是,事件从子代冒泡出来,并触发附加到父代的处理程序

您可以测试
event.target
,查看它是否与
this
(处理程序绑定到的元素)的值相同

示例:(打开控制台查看代码何时记录悬停元素的ID)


现在,
if
中的代码只有在您没有将鼠标移到父元素上,而不是移到子元素上时才会触发。

好的,谢谢您的回答!我会用你的方式或者用我写的第二段代码来做!Thanks@JoPango:无论你做什么,都不要放置
$(“#全局东西”).mousemove(function(){
在另一个
mousemove
处理程序的内部。将它们放在外部,因为您只需要分配一次。按您的方式操作将在鼠标移动时不断分配处理程序。ooops是的,非常感谢您指出这一点。最后,我尝试了event.target,它工作正常。
$("#desktop, #apps").mousemove(function(mouse){
    $("#global stuff").mousemove(function() {
        return false;
    });
    // ...
});
$("#desktop, #apps").mousemove(function(e){
     if( e.target === this ) {
        //run your code
     }
});