0

これを機能させる方法がわかりません。いくつかのバリエーションを試しました。オフセットに基づいて、ウィンドウを .accordion > dt の上にスクロールしたい。現在、このコードはパネルを開いてページのリロードを開始するだけです。

(function($) {

    var $j = jQuery.noConflict();
    var allPanels = $j('.accordion > dd').hide();

    $('.accordion > a > dt').click(function() {
        $this = $j(this);
        $target = $this.parent().next();


        if (!$target.hasClass('active')) {
            allPanels.removeClass('active').slideUp();
            $target.addClass('active').slideDown();
            window.scrollTo($(".accordion").offset().top);
        }

        return false;
    });

})(jQuery);
4

1 に答える 1

0

DT要素がアンカータグで存在しているように見えます。false を返すことで、要素のデフォルトのクリック動作を停止しますがDT、イベントがリンクまで伝播するのを停止する必要があります。

$('.accordion > a > dt').click(function(e) {

    $this = $j(this);
    $target = $this.parent().next();


    if (!$target.hasClass('active')) {
        allPanels.removeClass('active').slideUp();
        $target.addClass('active').slideDown();
        window.scrollTo($(".accordion").offset().top);
    }

    e.stopPropagation();
    return false;

});
于 2012-07-30T22:34:53.440 に答える