0

私は2つのスクリプトを持っています。1 つは を使用してページの特定の部分にスクロールする方法で、もう 1 つは を使用して#idnameコンテンツを交換する方法#idnameです。

すべての ID は一意であり、それらは異なるコンテナー div にありますが、スワッピング コンテンツをクリックすると、スクローラー スクリプトもトリガーされます。

競合している 2 つのスクリプトを次に示します。

スクロール スクリプト:

(function ($) {
    var l = location.href.replace(/#.*/, '');
    var g = $.localScroll = function (a) {
            $('body').localScroll(a)
        };
    g.defaults = {
        duration: 1e3,
        axis: 'y',
        event: 'click',
        stop: true,
        target: window,
        reset: true
    };
    g.hash = function (a) {
        if (location.hash) {
            a = $.extend({}, g.defaults, a);
            a.hash = false;
            if (a.reset) {
                var e = a.duration;
                delete a.duration;
                $(a.target).scrollTo(0, a);
                a.duration = e
            }
            i(0, location, a)
        }
    };
    $.fn.localScroll = function (b) {
        b = $.extend({}, g.defaults, b);
        return b.lazy ? this.bind(b.event, function (a) {
            var e = $([a.target, a.target.parentNode]).filter(d)[0];
            if (e) i(a, e, b)
        }) : this.find('a,area').filter(d).bind(b.event, function (a) {
            i(a, this, b)
        }).end().end();

        function d() {
            return !!this.href && !! this.hash && this.href.replace(this.hash, '') == l && (!b.filter || $(this).is(b.filter))
        }
    };

    function i(a, e, b) {
        var d = e.hash.slice(1),
            f = document.getElementById(d) || document.getElementsByName(d)[0];
        if (!f) return;
        if (a) a.preventDefault();
        var h = $(b.target);
        if (b.lock && h.is(':animated') || b.onBefore && b.onBefore.call(b, a, f, h) === false) return;
        if (b.stop) h.stop(true);
        if (b.hash) {
            var j = f.id == d ? 'id' : 'name',
                k = $('<a> </a>').attr(j, d).css({
                    position: 'absolute',
                    top: $(window).scrollTop(),
                    left: $(window).scrollLeft()
                });
            f[j] = '';
            $('body').prepend(k);
            location = e.hash;
            k.remove();
            f[j] = d
        }
        h.scrollTo(f, b).trigger('notify.serialScroll', [f])
    }
})(jQuery);

コンテンツのフェード:

$(window).load(function() {
    (function($) {
        $.fn.Fader = function() {
            this.each(function() {
                $('a').bind('click', function(e) {
                    e.preventDefault();
                    $("#mediaswap div").fadeOut();
                    $("#mediaswap div" + $(this).attr('href')).fadeIn();
                })
            });
        }
    })(jQuery);
    $(function() {
        $('#mediaswap').Fader();
    });
});

競合しないように、スクリプト 2 (コンテンツのフェード) で何を変更する必要がありますか?

4

1 に答える 1

0

解決策を見つけたようです。

$(this).attr('href')).fadeIn();

$(this).attr('name')).fadeIn();
于 2012-07-19T16:08:11.890 に答える