私は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 (コンテンツのフェード) で何を変更する必要がありますか?