2016-09-16 1 views
0

これを整理する最善の方法、またはそのようなメソッドを実行する実際の最速かつ最良の方法を探しています。jqueryを使用して要素に可能なクラスの配列が存在するかどうかを調べる最速の方法

私はstackoverflowに関するたくさんの質問を読んできましたが、これはうまく動作しません。私は下の作業の解決策を持っていますが、それは肥大化しているように見えますが、これより速くて洗練された方法があるかもしれません。

See test fiddle here.

私は、関数を実行しようとしていますが、クラスの配列は、私のbodyタグに存在しない場合に限ります。

私が私が欲しいのセレクタとしてBODY.ie-9,BODY.ie-8,BODY.ie-7,BODY.ie-6を一覧表示することによってだった望んでいた結果を得ることができると思われる唯一の方法は、

// run scroll reveal if none of these ie classes exist in the body tag 
if (!$('BODY.ie-9,BODY.ie-8,BODY.ie-7,BODY.ie-6')[0]) { 

    // scroll reveal function 
    window.sr = new ScrollReveal({ reset: false }); 
    sr.reveal('FIGURE', { duration: 300 }); 

} 

...以下の作業のコードを参照してください。

私が望む結果は、これらの.ie-クラスがbodyタグに存在しない場合、子関数を実行することです。

ご提案いただければ幸いです。おかげ

+0

間違ったセレクタを使用しています。例えば、 '.ie-7'のように使用すれば十分です。 – SaidbakR

+1

これは、そのクラスのdomのすべての要素をチェックしようとしているわけではありませんか?チェックするのに時間がかかりますか? – joshmoto

+0

私はちょうどそれを意味するわけではない、私はセレクタから 'BODY'を取り除くことを意味する。 – SaidbakR

答えて

3

あなたも、jQueryのを必要としない:

// run scroll reveal if none of these ie classes exist in the body tag 
if (!/(?:^|\s)ie\-[6-9](?:$|\s)/.test(document.body.className)) { 
    // ... 
} 

このソリューションは、単にクラス名が正規表現を使用してie-{character between 6 and 9, inclusive}と一致するかどうかのために<body>とテストにclass属性をチェックします。また、クラス名全体(空白で埋められるか、文字列の先頭と末尾になります)と一致するかどうかを確認します。

+1

Yeaaaahの仲間よりもはるかに優れています。それは甘いです!正規表現の男はこれに乗る必要があります!おかげです。 – joshmoto

+0

非常にクールな感謝! – joshmoto

+0

もう一度迷惑をかけて申し訳ありませんが、あなたのメソッドにちょうど入っています。このフィドルhttps:// jsfiddleを見てください。net/7md36thw/3 /私は実質的に同じ方法をやっていますが、純粋なjを使って 'DIV'要素をどのように残しておくのですか? – joshmoto

関連する問題