コーヒーアンドキーボード

コーヒーとキーボードにまみれて生活してます。一応専門はデジタルマーケ。

へたれすぎてjQueryのDOM操作でハマる

jQueryを勉強中なんですが、よくあるタブUIを実現しようと思ったら、Clickイベントの$(this)をちゃんと使わないせいでハマりました。

$(this)を使わずに、タブを1個設置して「わーいできた」と思っていたら、2個目のタブを設置したときに、タブをクリックするたびに、触ってないもう一方のタブのclass="selected"がはずれて消えてしまうというへたれ。

No...

// 修正前
$(function(){
    $('.tabs').each(function(){
        $('ul.tab>li:nth-child(1)').children('a').addClass('selected');
        $('ul.panel>li:not(:nth-child(1))').hide();
        $('ul.tab li a').click(function(){
            $('ul.tab li a.selected').removeClass('selected');
            $(this).addClass('selected');
            $('ul.panel>li').hide();
            $($(this).attr('href')).show();
            return false;
        });
    });
});
// 修正後
$(function(){
    $('.tabs').each(function(){
        $('ul.tab>li:nth-child(1)').children('a').addClass('selected');
        $('ul.panel>li:not(:nth-child(1))').hide();
        $('ul.tab li a').click(function(){
            $(this).parents('ul').find('.selected').removeClass('selected');
            $(this).addClass('selected');
            $(this).parents('.tabs').find('ul.panel').children('li').hide();
            $($(this).attr('href')).show();
            return false;
        });
    });

});