
以下のスライドメニューは、それぞれブロック要素で構成されていて、リンク文字や余白をクリックするとスライドトグルで開閉が行われます(htmlファイルにコピーすれば動作すると思います)。
ひとまずイメージ通りに完成したのですが、1つ困ったことがあります。それはリンク文字をクリックしたときにトグルが実行されてしまうことです。ページ遷移する間にメニューが一度開閉してしまうので見た目にあまりスマートではありません。
それを修正するためいろいろ試行錯誤したのですが、どうやってもわからなかったので質問いたしました。リンク文字をクリックしたときは、ページ遷移のみでトグルを実行しないようにするにはどのように書けばよいのでしょうか?
また、このソースはjQueryを1.7.2以上にすると動作しなくなってしまいます。この原因が分かる方がいらしたらぜひお教えください。
どうぞよろしくお願いいたします。
<!---------------------------------->
<script type='text/javascript' src='http://www.google.com/jsapi'></script>
<script type='text/javascript'>google.load('jquery', '1.7.1')</script>
<script type='text/javascript'>
<!--
$(function(){
$('span.tree_a').click(function() {
$(this).next().slideToggle();
}).next().hide();
});
//-->
</script>
<!---------------------------------->
<style type="text/css">
span.tree_a{
width: 100%;
display: block;
}
</style>
<!---------------------------------->
<ul>
<li><span class='tree_a'><a href='http://www.google.co.jp/'>親メニュー1</a></span>
<ul>
<li><span class='tree_a'><a href='http://www.google.co.jp/'>子メニュー1</a></span>
<ul>
<li><a href='http://www.google.co.jp/'>孫メニュー1</a></li>
</ul>
</li>
</ul>
</li>
<li><span class='tree_a'><a href='http://www.google.co.jp/'>親メニュー2</a></span>
<ul>
<li><span class='tree_a'><a href='http://www.google.co.jp/'>子メニュー2</a></span>
<ul>
<li><a href='http://www.google.co.jp/'>孫メニュー2</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<!---------------------------------->
No.1ベストアンサー
- 回答日時:
なんだかとてもわかりづらいUIのような気もしますが…
ご質問のようになさりたければ、
・li要素をクリックした場合に、クリックの対象がa要素でなければ、その子メニューをトグルで開閉
という感じにすればよいのではないでしょうか。
ただし、a要素をwidth100%にしておきながら、その中をクリックしてもブラウザ側の解釈に頼って処理が分かれているというのは、コードと関係ないところで処理が分岐してしまっていて気に食わないので、明示的にli要素とその子要素のa要素を書き分けるようにしています。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head><title>test</title>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7. …
<script type="text/javascript">
$(function(){
$('ul>li').click(function(e){
if(e.target.nodeName==="A") return;
$(this).children("ul").slideToggle();
return false;
}).children("ul").hide();
});
</script>
</head>
<body>
<ul>
<li><span class='tree_a'><a href='http://www.google.co.jp/'>親メニュー1</a></span>
<ul>
<li><span class='tree_a'><a href='http://www.google.co.jp/'>子メニュー1</a></span>
<ul>
<li><a href='http://www.google.co.jp/'>孫メニュー1</a></li>
</ul>
</li>
</ul>
</li>
<li><span class='tree_a'><a href='http://www.google.co.jp/'>親メニュー2</a></span>
<ul>
<li><span class='tree_a'><a href='http://www.google.co.jp/'>子メニュー2</a></span>
<ul>
<li><a href='http://www.google.co.jp/'>孫メニュー2</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</body>
</html>
>このソースはjQueryを1.7.2以上にすると動作しなくなってしまいます
当方の環境では、1.7.2にしてみても、旧いIE6でも動作しました。
jQueryのバージョンによってはサポートブラウザの対象が変わったりもしていますが、1.7.1と1.7.2ではあまり違いがなさそうに思います。
リリースノートがこちらにありますので、調べてみてください。
http://blog.jquery.com/2012/03/21/jquery-1-7-2-r …
ご回答ありがとうございます。
イメージ通りに動作しました。
素人作業ですのでわかりづらいUIになっていますが、自分のスキルではこれ以上のものを作成できないので、これからもっとマシなUIにしていこうと思います。
バージョンの件もご回答ありがとうございました。よく確認してみます。
貴重なお時間をお使いいただき、誠にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のラジオボタン項目でのテ...
-
同一ページ内で、任意の文字列...
-
gridstack.jsについて教えてく...
-
SleniumBasicでコンパイルエラ...
-
【JQuery】アコーディオンの入...
-
タブ切り替えの初期表示について
-
jQueryでネスト構造の<li>がク...
-
アコーディオンメニューの開閉制御
-
jqueryにてIEでの不具合 each...
-
javascriptでフォーカスを当て...
-
【javascript で動的に a タグ...
-
JSPでの画像ファイル表示
-
プルダウンとチェックボックス...
-
MAX関数を使ってからLEFT JOIN...
-
jspでcssが読み込めない
-
iframe内のリンクが飛ばないの...
-
eclipseでcssを使うためには?
-
パララックスについて 上下に...
-
jQueryで同じクラス名のものを...
-
クリックした自身の画像を別画...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jqueryのsortableで一部ソート...
-
どの<li><a> が押されたか判別...
-
同一ページ内で、任意の文字列...
-
タブ切り替えの初期表示について
-
jQueryスライドメニューの初歩...
-
jQueryのeqで最後からn番目以降...
-
javascriptでフォーカスを当て...
-
<li></li>の数を制限
-
【javascript で動的に a タグ...
-
JS <a></a>タグ内のリンク先ア...
-
『JavaScript Accordion』について
-
カレントページ aタグではなく...
-
jQueryプラグインのメガドロッ...
-
jQueryで記事を6列表示にした...
-
大至急!!HPビルダー16の専...
-
jquery 親要素以外の取得
-
下記のようにクリックすると、...
-
jQueryでネスト構造の<li>がク...
-
ページの上下に同じタブメニュ...
-
jQueryについて質問なのですが...
おすすめ情報