我有两个脚本。一个是使用#idname
滚动到页面的特定部分,另一个是使用#idname
交换内容。
所有ID都是唯一的,它们位于不同的容器div中,但是当我单击交换内容时,也会触发滚动脚本。
以下是两个相互矛盾的脚本:
滚动脚本:
(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(内容渐变)以使它们不冲突?
答案 0 :(得分:0)
我似乎已找到解决方案,购买更改
$(this).attr('href')).fadeIn();
到
$(this).attr('name')).fadeIn();