我正在尝试延迟链接attrib,以便在内容淡出后应用它。但添加超时功能不起作用。有什么想法吗?
$(function () {
$(".layout a").click(function () {
setTimeout(function () { $("link:first").attr("href", $(this).attr('rel')); }, 500)
$.cookie("Layout", $(this).attr('name'), { expires: 365, path: '/media', secure: true });
$('.content, .searchresults').fadeOut(500).delay(500).fadeIn(275);
window.scrollTo(0, 0); // Scroll Window back to Top
return false;
});
});
答案 0 :(得分:0)
不是设置超时以对应延迟,而是可以为fadeOut函数指定回调:
$(".layout a").click(function () {
$.cookie("Layout", $(this).attr('name'), { expires: 365, path: '/media', secure: true });
$('.content, .searchresults').fadeOut(500, function() {
$("link:first").attr("href", $(this).attr('rel'));
}).fadeIn(275);
window.scrollTo(0,0);
return false;
}
查看jQuery参考以获取更多信息:http://api.jquery.com/fadeOut/
我通常通过javascript改变通过链接标记加载的样式表几乎没有运气。
答案 1 :(得分:0)
你被this
的范围所击败的时间超过时间。
表达式
$(this).attr('rel');
本身很好,但在setTimeout
函数内,this
不再引用被点击的元素。
好消息是,通过将$(this).attr('rel')
分配给this
仍然引用正确对象的合适点的局部变量,可以轻松解决问题。
此外,为了保证计时,您可以移动可能的setTimeout函数,使其成为fadeOut()
表达式的回调。
将这两件事加在一起,代码如下:
$(function () {
$(".layout a").click(function () {
var rel = $(this).attr('rel');
$.cookie("Layout", $(this).attr('name'), { expires: 365, path: '/media', secure: true });
$('.content, .searchresults').fadeOut(500, function() {
$("link:first").attr("href", rel);
}).delay(500).fadeIn(275);
window.scrollTo(0, 0); // Scroll Window back to Top
return false;
});
});