0

我正在尝试在 jQuery 上测试空e.classList(如果您为其传递参数,则讨论 jQuery 传递给事件的 DOM 映射值)。

所以,我正在做一个荒谬的 JS 检查是否为空,因为我想在e.classList.length小于 integer的情况下退出函数1

奇怪的是我已经试过了

if ( ( typeof newTargetClasses !== "undefined" && newTargetClasses !== null ) && newTargetClasses.length > 0 ) {

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

$( 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 of0和 type ofnumber

4

1 回答 1

1

classList 不是 jQuery 的东西,它是 DOM API 的东西。这也不能完全跨浏览器工作,因为根据 MDN,IE9 不支持它。

MDN 类列表

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

// 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) ) { ... }
于 2012-10-19T05:03:29.640 回答