首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在jquery事件后跟随链接

在jquery事件后跟随链接
EN

Stack Overflow用户
提问于 2013-02-25 07:27:02
回答 3查看 244关注 0票数 0

我有一个导航栏,一旦项目被点击,我就会对其进行动画处理。我想在导航完成后点击链接。

HTML:

代码语言:javascript
复制
<div id="project-nav">
    <ul> 
        <a href="" >
            <li class="project-3">1
                <ul> 
                    <li>WAIKANAE BEACH HOUSE</li>
                </ul>
            </li>
        </a>

        <a href="">
            <li class="project-4">2
                <ul> 
                    <li>WAITAHEKE WETLAND HOME</li>
                </ul>
            </li>
        </a>

        <a href="">
            <li class="project-1">3
                <ul> 
                    <li>WAIKANAE BEACH HOUSE</li>
                </ul>
            </li>
        </a>

脚本:

代码语言:javascript
复制
$("#project-nav a").click(function(ev) 
{
    ev.preventDefault();

    var $self=$(this);

    $(".project-1").animate( {"top": "+=-500px"}, 1200, function() { showComplete() } );
    $(".project-2").animate( {"top": "+=-500px"}, 1400, function() { showComplete() } );
    $(".project-3").animate( {"top": "+=-500px"}, 1000, function() { showComplete() } );
    $(".project-4").animate( {"top": "+=-500px"}, 1000, function() { showComplete() } );
    $(".project-5").animate( {"top": "+=-500px"}, 1000, function() { showComplete() } );
});

function showComplete()
{
    document.location = $self.attr('href');
}

这是我到目前为止所做的,动画工作,但它不跟随链接。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-25 07:29:51

问题是在showComplete的作用域之外声明了$self

试着这样做:

代码语言:javascript
复制
$("#project-nav a").click(function(ev) {

    ev.preventDefault();
    var $self=$(this);

    $(".project-1").animate( {"top": "+=-500px"}, 1200, showComplete);
    $(".project-2").animate( {"top": "+=-500px"}, 1400, showComplete);
    $(".project-3").animate( {"top": "+=-500px"}, 1000, showComplete);
    $(".project-4").animate( {"top": "+=-500px"}, 1000, showComplete);
    $(".project-5").animate( {"top": "+=-500px"}, 1000, showComplete);

    function showComplete(){
        window.location = $self.attr('href');
    }
});

我所做的是在事件处理程序中移动showComplete

票数 0
EN

Stack Overflow用户

发布于 2013-02-25 07:30:56

$self超出了showComplete()的作用域。

您应该改为传递一个参数。

示例

代码语言:javascript
复制
$(".project-5").animate( {"top": "+=-500px"}, 1000, function() { showComplete($self.attr("href")) } );

function showComplete(pUrl){
    document.location = pUrl;
}
票数 0
EN

Stack Overflow用户

发布于 2013-02-25 07:30:59

我猜$self是未定义的。它只存在于创建它的函数中。

你需要做的是: showComplete($self);

然后在函数创建过程中:

代码语言:javascript
复制
showComplete(el){
    document.location = el.attr('href');
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15057956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档