クリックしたアンカータグにクラスを分離して追加しようとしています。タグはWordpressループから取得されています。JQueryを記述して「静的」クラスを削除することはできますが、クリックしただけでなく、div内のすべてのタグからクラスを削除し、アクティブなクラスを一瞬追加します。その後、ページが再読み込みされると、すべてのクラスが削除されます。新しいプロジェクトのセット。
これがWPループです
<div class="more">
<a class="static" href="<?php bloginfo('template_url'); ?>/work/">ALL</a>
<?php
foreach ($tax_terms as $tax_term) {
echo '<a class="static" href="' . esc_attr(get_term_link($tax_term, $taxonomy)) . '" title="' . sprintf( __( "View all posts in %s" ), $tax_term->name ) . '" ' . '>' . $tax_term->name.'</a>';
} ?>
</div>
このhtmlを生成します:
<div class="more">
<a class="static" href="#">ALL</a>
<a class="static" href="#">Things</a>
<a class="static" href="#"> More Things</a>
<a class="static" href="#">Objects</a>
<a class="static" href="#">Goals</a>
<a class="static" href="#">Books</a>
<a class="static" href="#">Drawings</a>
<a class="static" href="#">Thoughts</a>
</div>
JQuery:
$("div.more a").on("click", function () {
$("a.static").removeClass("static");
$(this).addClass("active");
});
私はこことここで他の同様の質問を再検討しましたが、どちらの解決策も私にはうまくいきません。これはJQueryで実行できますか、それともHTMLインラインアンカーにクリックイベントを配置する必要がありますか?
ページがリロードされるまで、ほんの一瞬動作しているようです。
Chrome開発ツールを使用してソースを表示しています。正しく機能しているように見えますが、ページがリロードされると、「静的」クラスがdiv内のすべてのアンカータグから削除されます。ページの読み込み後に、新しく追加されたクラス名が削除される理由はありますか?
URLを介して変数を渡すことにより、プロジェクトのセットをロードしています。たとえば、[ Things?type=airports
]をクリックすると、特定の相対投稿を取得するためにURLが渡されます。
アップデート:
おそらく、これを達成するためのより良い方法があります。全体的な目標は、結果セットを表示するときにクリックしたリンクをユーザーに表示することです。したがって、「THings」をクリックすると、リンクの背景が緑色、タイプが白色などになります。JQueryはページのリロードで追加されたクラスを削除するため、phpの方が優れたソリューションでしょうか。
更新2
提案されたコードはすべて機能しました。リンクがページをリロードし、urlパラメータでフィルタリングしているため、問題は解決されていませんが、答えは完全に正しかったです。