繁体   English   中英

带有对象引用选择器的jQuery Parents()

[英]jQuery parents() with object reference selector

我正在尝试检测目标元素是作为对象引用的子元素还是相同元素。

我正在使用以下逻辑:

$("html").on("mousewheel.scroll DOMMouseScroll.scroll",function(e){
   e.preventDefault();

   var $scrollableElement = $(".foo").eq(0);
   var $target = $(e.target);

   if ($target == $scrollableElement
       || $target.parents($scrollableElement).length) {                
        alert("scroll");                    
   }

});  

然而“滚动”甚至在滚动既不是一个元素时惊动.foo或孩子.foo

在我的JsFiddle示例中,在.bar元素上滚动,并仍然警告“ scroll”:

http://jsfiddle.net/Lf3d2/

为什么是这样? 是否可以将jQuery对象引用用作.parents()的选择器?

尝试使用.closest()而不是.parents()

$(function () {

    var $scrollableElement = $(".foo").eq(0);
    $("html").on("mousewheel.scroll DOMMouseScroll.scroll", function (e) {
        e.preventDefault();

        var $target = $(e.target);

        if ($target.closest($scrollableElement).length) {
            console.log("scroll");
        }

    });

});

演示: 小提琴

如果您看看.parents()的语法,那么它不会将jQuery对象作为参数。 唯一允许的语法是.parents( [selector ] )


正如@ A.Wolff询问为什么不将事件绑定到.foo

演示: 小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM