Javascript 测试jQuery event.classList是否为空

Javascript 测试jQuery event.classList是否为空,javascript,jquery,syntax,operators,conditional,Javascript,Jquery,Syntax,Operators,Conditional,我试图在jQuery的e.classList上测试empty(如果传递参数,则谈论jQuery传递给事件的DOM映射值) 因此,我正在对empty执行一个荒谬的JS检查,因为我想退出e.classList.length小于整数1的实例的函数 奇怪的是,我已经试过了 if((newTargetClass的类型!=“未定义”&&newTargetClass!==null)&&newTargetClass.length>0){ 但即使e.classList中没有项目,它也会返回true:/ $( wi

我试图在jQuery的
e.classList
上测试empty(如果传递参数,则谈论jQuery传递给事件的DOM映射值)

因此,我正在对empty执行一个荒谬的JS检查,因为我想退出
e.classList.length
小于整数
1
的实例的函数

奇怪的是,我已经试过了

if((newTargetClass的类型!=“未定义”&&newTargetClass!==null)&&newTargetClass.length>0){

但即使
e.classList中没有项目,它也会返回
true
:/

$( window ).on( 'mouseenter', '.my-class', function( e ) {

    var newTargetClasses = e.toElement.classList;

    if ( ! isNaN( newTargetClasses.length ) && newTargetClasses.length > 0 ) {
        $.each( newTargetClasses, function() {
            if ( ! thePopover.has( '.' + this ).length > 0 ) {
                el.my_jquery_func('hide');
                return false;
            }
        })
    }
}

这些布尔值缺少什么?
newTargetClasses.length
在我试图检查的条件中,返回的val值为
0
,类型为
number
类列表不是jQuery,而是DOM API。这也不能完全跨浏览器工作,因为根据MDN,IE9不支持它

至于您的代码,您应该能够简化该条件

// classList will always be falsy in IE9 so this will never run
if (e.toElement.classList && e.toElement.classList.length ) {}.
如果您希望它是跨浏览器的,那么您可以尝试以下方法

if ( $.trim(e.toElement.className) ) { ... }

仅供参考,我投票反对您对的编辑,因为我觉得这是一个如此重大的变化,您真的应该将其作为您自己问题的答案发布(并接受),同时投票支持他的答案,以表彰其贡献。