2017-02-16 3 views
0

ulliのドロップダウンメニューがあります。 liをクリックするたびに"ui-state-active"が表示され、再度クリックするとクラスが削除されます。 liにそのクラスがある場合、そのページの内容を非表示にしたいと思います。それは簡単なはずですが、私は問題に遭遇しています。エレメントhasClassの場合のJQuery、コンテンツの表示

$("li").on("click", function(){ 
    if($(this).hasClass("ui-state-active")){ 
     console.log("Yes"); 
     mainContent.fadeOut(); 
    } else if (!$(this).hasClass("ui-state-active")){ 
     console.log("No"); 
     mainContent.FadeIn(); 
    } 
}) 

常にYesと評価されます。私は間違って何をしていますか?

+0

htmlのマークアップを追加する – guradio

+0

クライアントのWordpressサイト – Sergi

+1

はできません。もちろん、出力HTMLをコピーするか、その構造の基本的な例だけでもコピーできます。 –

答えて

-1

$(this)はちょうどクリックされた要素です。あなたが説明したように今クリックされたクラスはこのクラスを持っているので、他の要素をクエリする必要があります。

ただし、これはHTMLマークアップの方法によって異なります。たぶん、あなたはjQuery.parent()で動作することができます: は、このようなhttps://api.jquery.com/parent/

何か作業をする必要があります:

$(this).parent('ul').hasClass("ui-state-active") 

$(function() { 
 
    $("#tabs").tabs(); 
 
    $("li").on("click", function() { 
 
    $(this).parent('ul').children().each(function(index) { 
 
     if ($(this).hasClass("ui-state-active")) { 
 
     console.log("Yes"); 
 
     // mainContent.fadeOut(); 
 
     } else if (!$(this).hasClass("ui-state-active")) { 
 
     console.log("No"); 
 
     // mainContent.FadeIn(); 
 
     } 
 
    }); 
 

 
    }) 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/themes/smoothness/jquery-ui.css"> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min.js"></script> 
 

 
<div id="tabs"> 
 
    <ul> 
 
    <li><a href="#tabs-1">Nunc tincidunt</a></li> 
 
    <li><a href="#tabs-2">Proin dolor</a></li> 
 
    <li><a href="#tabs-3">Aenean lacinia</a></li> 
 
    </ul> 
 
    <div id="tabs-1"> 
 
    <p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper 
 
     leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. 
 
     Nunc tristique tempus lectus.</p> 
 
    </div> 
 
    <div id="tabs-2"> 
 
    <p>Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean 
 
     aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. 
 
     Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.</p> 
 
    </div> 
 
    <div id="tabs-3"> 
 
    <p>Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem. Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia 
 
     nostra, per inceptos himenaeos. Fusce sodales. Quisque eu urna vel enim commodo pellentesque. Praesent eu risus hendrerit ligula tempus pretium. Curabitur lorem enim, pretium nec, feugiat nec, luctus a, lacus.</p> 
 
    <p>Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna 
 
     ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. 
 
     Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.</p> 
 
    </div> 
 
</div>

+0

「投稿応答」を押すことを意味しましたか?これはコメントのようですが、それでもあまり意味がないのです –

+1

いいえ、OPは彼がクラスを*トグルしていると言います。 ( "...再びクリックするとクラスが削除されます") – Jamiec

+0

はい、要素を右クリックすると再びアクティブになります –

-2

はあなたの条件の両方に線の下に追加します。

$(this).toggleClass("ui-state-active"); 
2

I私はちょうど追加し、そのクラスを除去するためのコードです見つけることができない、あなたの質問の核心は

正直なところ、あなたの最後のコメントに本当にだと思う、それはWordpressのだとその部分はプラグインでなければなりません。

それはほぼ確実にプラグインがクラスをトグルさ前に、あなたの質問に示したliクリックハンドラのコードはを発射した場合です。

この問題の唯一の修正点は、プラグインを見つけて、発生したイベントを確認し、コンテンツを表示/非表示にするイベントにフックすることです。ショートカットはありません。

+0

'.ui-state-active'はjQueryのUIです。 _ "mousedown上でクリック可能なボタンのような要素に適用されるクラス" clickable active "コンテナスタイルを要素とその子テキスト、リンク、およびアイコンに適用します。 jQuery UIのプラグインがこのクラスを設定していて、jQuery UIのソースコードを変更する代わりに、このクラスのイベントを使用していることを知ることは素晴らしいことです。 –

+0

ありがとう、これは私に良いヒントを与えます。 – Sergi