2017-01-07 4 views
0

jQueryが希望の新しいクラスをボディに適用して、最初のコンディションを常に条件の異なる無条件にする理由を理解できませんでした。すべてのケースで最初の条件で条件がTrueと評価される

HTMLは、これらの異なるタグが含まれています

<h1 class="entry-title">Intro Audios</h1> 
<h1 class="entry-title">Level 1 Audios</h1> 
<h1 class="entry-title">Level 2 Audios</h1> 
<h1 class="entry-title">Level 3 Audios</h1> 

16ページは正確で、H1タグ最初aboeveを含むように、他の16は、上記などのH1タグが含まれています。

しかし、関係なく、私はbodyタグに追加されたクラスを訪問どのページ常にではない「レベル1」

<script> 
    jQuery(document).ready(function($){ 

var level1 = $("h1.entry-title:contains(Level 1)"); 
var level2 = $("h1.entry-title:contains(Level 2)"); 
var level3 = $("h1.entry-title:contains(level 3)"); 

if (level1) 
{ 
$(document.body).addClass('level-1'); 
} else if (level2) 
{ 
$(document.body).addClass('level-2'); 
} else if (level3) 
{ 
$(document.body).addClass('level-3'); 
} else 
{ 
$(document.body).addClass('intro'); 

} 
}); 

</script> 

は私が間違って何をしているのですか?

+0

'if(level1)'の期待される結果は? 'jQuery()'はオブジェクトを返します。 – guest271314

+0

あなたは:contains引数に引用符を追加しようとしましたか? var level1 = $( "h1.entry-title:contains( 'Level 1')"); – foxinatardis

+0

guest271314期待される結果はbodyタグに追加された新しいクラスです。 if(level1)の場合bodyタグに追加されたクラスは 'level-1'です。どちらが起こるのですか?他の条件が真であれば、 'level-1'クラスもbodyタグに追加されます。 – Agustin

答えて

0

彼らが戻るlevel1level2 VARSが記録され、コンソールをチェックして、レベル1 には、対応するHTMLコードが存在しない、このバイオリンを試してみてくださいhttps://jsfiddle.net/djkk8yrg/

[prevObject: jQuery.fn.init[1]] 
[h1.entry-title, prevObject: jQuery.fn.init[1]] 

LEVEL1要素がHTMLに存在しないにもかかわらず、それはちょうどprevObjectを返します。追加のロジックを追加して、返されるprevObjectだけではないことを確認します。

+0

おそらく私はこのサイトにページのdocentsがあることを明確にする必要があります、それらのグループはタグを含んでいます:

イントロオーディオ

。 他のグループには他のHTMLタグが含まれています。 – Agustin

+0

Anurag Sirha申し訳ありませんが、私はあなたの答えにあなたの提案を実装する方法を理解していませんでした。 – Agustin

0

私がしようとしていたのは、特定のワードプレスカテゴリが存在するかどうかに応じてbodyタグにクラスを追加できるようにすることでした。それが存在する場合はbodyタグにクラスを追加して、新しいボディクラスに従ってそれぞれのページを別々にスタイル設定することができます。

はしようとしばらくの間、異なった答えとコードをテストした後、私はその中華鍋解決策を見つけ、それがこれです:

<script> 
jQuery(document).ready(function($){ 

var intro = $("article").hasClass("category-level-intro"); 
var level_1 = $("article").hasClass("category-level-1"); 
var level_2 = $("article").hasClass("category-level-2"); 
var level_3 = $("article").hasClass("category-level-3"); 

// check to see if the condition is true 
if(intro === true) 
    { 
    $(document.body).addClass('intro'); 
    } else if (level_1 === true) 
    { 
    $(document.body).addClass('level-1'); 
    } else if (level_2 === true) 
    { 
    $(document.body).addClass('level-2');  
    } else if (level_3 === true) 
    { 
    $(document.body).addClass('level-3');  
    } else { 
    $(document.body).addClass(''); 
    } 
    }); 
    </script> 

ありがとう!

関連する問題