这里是我的工作小提琴:http://jsfiddle.net/Scd9b/延迟的链路点击
我怎样才能延缓点击后的HREF功能?
例如用户点击链接,消息滑落有一瞬间...和2秒后用户继续到其链接的页面。
对不起,每个人都忘了提及有一些没有链接的锚。
这里是我的工作小提琴:http://jsfiddle.net/Scd9b/延迟的链路点击
我怎样才能延缓点击后的HREF功能?
例如用户点击链接,消息滑落有一瞬间...和2秒后用户继续到其链接的页面。
对不起,每个人都忘了提及有一些没有链接的锚。
您可以模拟通过设置window.location的导航到一个页面。因此,我们将阻止该链接的正常功能与preventDefault
,然后在setTimeout
,我们将设置正确window.location的:
取消点击并使用setTimeout更改位置。
$(document).ready(function(){
$("span.answer").hide();
$("a.question").click(function(e){
$(this).toggleClass("active").next().slideToggle("slow");
e.preventDefault();
var loc = this.href;
if(loc){
window.setTimeout(function(){ window.location.href=loc; }, 2000);
}
});
});
但我也有一些锚链没有链接。这些被重定向到一个未定义的URL。任何方式让这个脚本工作与重定向未链接的锚点? – henryaaron 2012-01-08 05:26:10
检查loc是否有值。编辑的代码。或者你可以使用一个确保它有href的选择器。 a.question [href] – epascarello 2012-01-08 05:50:45
防止链接的默认动作,首先。然后添加2秒的超时时间,然后将页面重定向到链接的href
属性中的url
。
$("a.question").click(function(e){
e.preventDefault();
$(this).toggleClass("active").next().slideToggle("slow");
setTimeout(function(){
location.href = $(this).prop("href");
}, 2000);
});
这不适用于jQuery 1.4.2吗? – henryaaron 2012-01-08 05:25:52
只有'prop()'。用'attr()'替换它,你会没事的。尽管我推荐使用最新版本。 – Purag 2012-01-08 05:32:38
我希望...我的网站不会让我。 – henryaaron 2012-01-08 05:33:10
$(document).ready(function(){
$("span.answer").hide();
$("a.question").click(function(e){
e.preventDefault();
$(this).toggleClass("active").next().slideToggle("slow");
var Link = $(this).attr("href");
setTimeout(function()
{
window.location.href = Link;
},2000);
});
});
但我也有一些没有链接的锚点。这些被重定向到一个未定义的URL。任何方式让这个脚本工作与重定向未链接的锚点? – henryaaron 2012-01-08 05:25:03
@ user1090389 - 为此使用'$(“a.question [href]”)''选择器而不是'$(“a.question”)' – techfoobar 2012-01-08 05:27:34
@techfoobar但是我仍然希望动画能够处理那些不是链接... – henryaaron 2012-01-08 05:29:09
如何在您的点击处理程序e.preventDefault。然后做一个setTimeout,把你带到你的目的地?
$("a.question").click(function(e){
e.preventDefault();
$(this).toggleClass("active").next().slideToggle("slow");
setTimeout('window.location.href=' + $(this).attr(href), 2000);
});
检查此琴:http://jsfiddle.net/C87wM/1/
修改您的切换是这样的:
$("a.question[href]").click(function(){
var self = $(this);
self.toggleClass("active").next().slideToggle(2000, function() {
window.location.href = self.attr('href'); // go to href after the slide animation completes
});
return false; // And also make sure you return false from your click handler.
});
用于使用动画的完成功能而不是'setTimeout()'。 – jfriend00 2012-01-08 05:21:13
@ jfriend00:为什么它更好? – Purag 2012-01-08 05:22:29
@Purmou这样我们可以确定用户看到完整的动画。也是这样,我们不必担心链接延迟超过动画持续时间。即我们可以自由使用慢速或快速或2000等。 – techfoobar 2012-01-08 05:26:19
这应做到:
$("a[href]").click(function() {
var url = this.href;
setTimeout(function() {
location.href = url;
}, 2000);
return false;
});
但我也有一些没有链接的锚点。这些被重定向到一个未定义的URL。任何方式让这个脚本工作与重定向未链接的锚点? – henryaaron 2012-01-08 05:24:46
你是什么意思取消联系? – ctcherry 2012-01-08 05:26:09
'Hello' – henryaaron 2012-01-08 05:26:58