0

スクロールプラグインを使用した単純なタブスクリプトがあります。各タブをクリックすると、そのタブのスクロールがアクティブになりますが、各タブを2回クリックすると、2つのスクロールインスタンスが表示されるため、問題が発生します。ページ!これが私のコードです、何かアイデアはありますか?

PS私はmCustomScrollbarプラグインを使用しています。

(function($){
    $(window).load(function(){
                $('ul.tabs').each(function(){
                var $active, $content, $links = $(this).find('a');
                $active = $($links.filter('[href="' + location.hash + '"]')[0] || $links[0]);
                $active.addClass('active');
                $content = $($active.attr('href'));
                $links.not($active).each(function() {
                    $($(this).attr('href')).hide();
                });
                // Set scrollbar to main item
                $('#mContent').mCustomScrollbar();
                // Bind the click event handler
                $(this).on('click', 'a', function(e)
                {
                    var $currentScroll = null, $currentTab = $(this).attr('href');
                    switch ($currentTab)
                    {
                        case '#tabs-contentDescription':
                              $currentScroll = '#mContent';
                              break;
                        case '#tabs-contentChangelog':
                              $currentScroll = '#mChangelog';
                              break;
                        case '#tabs-contentPermission':
                              $currentScroll = '#mPermission';
                              break;
                    }
                    console.log('Current tab is: ' + $currentTab + ' And current scroll div is :' + $currentScroll);
                    // Make the old tab inactive.
                    $active.removeClass('active');
                    $content.hide();
                    // Update the variables with the new link and content
                    $active = $(this);
                    $content = $($(this).attr('href'));
                    // Make the tab active.
                    $active.addClass('active');
                    $content.show();
                    $($currentScroll).mCustomScrollbar();
                    e.preventDefault();
                });
        });
    });
}) (jQuery);
4

1 に答える 1

1

上記のコメントで私が提案していることの簡略化された例:

var active;

(function($){
    $(window).load(function(){

    [...]

    if(active) $(active).delete();
    active = $active = $(this);

    [...]

)}) (jQuery);
于 2013-01-22T17:41:18.487 に答える