-
ID:cSK.rd さんの質問

jquery / 直接タブにアクセスする方法

jquery勉強中の者です。
別ページから直接、特定のタブにアクセスする方法を探していて、
色々と調べて下記の方法で実現したのですが、

$(function(){

var activePanelId = $("#tab .active a").attr("href");

$("#tab .panel > div:not(" + activePanelId + ")").hide();
$("#tab > ul li a").click(function(){
$("#tab .panel").show();
$("#tab > ul li.active").removeClass("active");
$("#tab .panel > div").hide();
$(this).parent("li").addClass("active");
$($(this).attr("href")).fadeIn(500);
return false;

});

var hash = location.hash;
hash = (hash.match(/^#panel\d+$/) || [])[0];
var $tab = $("#tab > ul li a").filter("[href=" + hash +"]");
if ($tab.length > 0) {
$tab.eq(0).click();
}
});

この方法だと、普通にタブページを開いた時に
タブの中身が何も表示されていない状態になってしまいます。
タブのほうに「filter(’:eq(0)’).click(); 」を入れてみたら、
「$tab.eq(0).click();」とかちあってしまったのか正しく動作しなくなってしまって。。

宜しければアドバイス頂けますと大変助かります。。!

みんなの回答 1 件

ID:.UGR6r さんの回答

hashをそのまま使っちゃうとブラウザによってアンカーまで移動しちゃうので、hashを使う場合は#tab=tabidみたいな形にしちゃった方がいいよ。

このままだとlocation.hashがundefinedの場合、filter関数でエラーが出るので、その前の段階で分岐しないとダメですね。

最終更新日:2014-08-26 (3,530 views)

関連するトピックス

ページ上部に戻る