0

私はjQueryで空をテストしようとしてe.classListいます(パラメーターを渡す場合、jQueryによってイベントに渡されるDOMマップ値について話します)。

だから、私はインスタンスのために関数を終了したいので、空のために不条理なJSチェックを行っていe.classList.lengthます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確認しようとしている状態で、val0と typeが返されますnumber

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 に答える