アコーディオンメニューの特定部分にclassを付けたい
-
初めてご質問させていただきます。
wordpress初心者です。いろいろと検索をしてみましたが、該当する回答
が見当たりませんので、どなたかご教授ください。まず、サイドバーにアコーディオンメニューを設置したのですが、
構造は以下の通りです。・A(親)
・A-1(子)・・・孫が存在しない子
・A-2(子)
・A-2-1(孫)
・A-2-2(孫)
・A-3(子)
・A-3-1(孫)
・A-3-2(孫)各ページには、その親に属する子・孫のメニューが表示されるようになります。
そこで、jqueryの子メニューにclassを付け、子をクリックすると孫メニューがでる
アコーディオンを設置しました。————————————————
▼sidebar.php
————————————————
<ul class=”acc”>
<?php
if(is_page()){
$parent = array_reverse($post->ancestors);
if($parent) :
$pages = $parent[0];else :
$pages = $post->ID;
endif;
}
if($pages){
wp_list_pages(‘echo=1&title_li=&child_of=’. $pages);}
else{
}
?>————————————————
▼header.php
————————————————
<script type=”text/javascript” src=”http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js”></script>
<script type=”text/javascript” src=”ddaccordion.js” />
/***********************************************
* Accordion Content script- (c) Dynamic Drive DHTML code library (www.dynamicdrive.com)
* Visit http://www.dynamicDrive.com for hundreds of DHTML scripts
* This notice must stay intact for legal use
***********************************************/
</script>
<script type=”text/javascript”>
$(function() {
$(“.acc a”).addClass(“open”);
$(“.acc .children a”).removeClass(“open”);});
</script><script type=”text/javascript”>
ddaccordion.init({
headerclass: “open”,
contentclass: “children”,
revealtype: “click”,
mouseoverdelay: 200,
collapseprev: false,
defaultexpanded: [],
onemustopen: false,
animatedefault: false,
persiststate: true,
toggleclass: [“”, “”],
togglehtml: [“suffix”, “”, “”],
animatespeed: “slow”,
oninit:function(headers, expandedindices){ //custom code to run when headers have initalized
//do nothing
},
onopenclose:function(header, index, state, isuseractivated){ //custom code to run whenever a header is opened or closed
//do nothing
}
})
</script>————————————————
▼HTML
————————————————<ul class="acc"> <li class="page_item page-item-173"><a href="?page_id=173">A-1/a> <ul class='children'> <li class="page_item page-item-150"></a><a href="?page_id=150">A-1-1</a> <li class="page_item page-item-153"><a href="?page_id=153">A-1-2</a> <li class="page_item page-item-156"><a href="?page_id=156">A-1-3</a> <li class="page_item page-item-402"><a href="?page_id=402">A-2</a> <li class="page_item page-item-408"><a href="?page_id=408">A-3</a> <ul class='children'> <li class="page_item page-item-160"><a href="?page_id=160">A-3-1</a>
上記の内容で、設置したところ、当然「孫」を持たない「子」にもclassがついて
しまって、その子メニューからのリンクが効きません。そこで、ul class=”children”(=孫メニュー)を持つ
メニューのみにclassを付けようと、
hasclass()を使って以下の内容に書き換えてみましたが、
以下の命令について、まったく反応してくれません。———————————————-
▼header.php
———————————————-<script type=”text/javascript”>
$(function() {
$(“li a”).each(function(i, item){
if ($(item).children().hasClass(“children”)) {
$(item).addclass(“open”);
}
});
});
</script>私の知識不足で、こちらのフォーラムに初歩的な質問でお世話になりますが、
何卒よろしくお願い申し上げます。
- トピック「アコーディオンメニューの特定部分にclassを付けたい」には新たに返信することはできません。