jQuery从click函数传递返回值

时间:2014-02-06 18:23:29

标签: jquery

我有两个函数,我想将一个变量传递给另一个变量。 第一个功能

var redirect_url;

$("li a.nav_item").click(function(){

        redirect_url=$(this).attr("data-url");
        alert(redirect_url); //correctly alerts the value



        });

function update_counter(){

                alert(redirect_url); //alerts Undefined
                $("#final_countdown").text(timer);



    }

1 个答案:

答案 0 :(得分:0)

当您的计时器触发时,它与您定义它时的上下文不同。如果您希望它执行的函数与创建计时器时的范围相同,请执行以下操作:

function something() {
    var x = 5;
    var t = setTimeout(function(){
        alert(x);//will alert 5
    }, 500);
}

在这种情况下,计时器执行的函数可以识别x的值,并且可以使用它,即使它稍后会触发。

这是另一个更符合您情况的例子:

$("li a.nav_item").click(function(){
    redirect_url=$(this).attr("data-url");
    setTimeout(function(){
        location.href = redirect_url;
    }, 1000);
});

单击时,将获取包含新URL的属性。然后创建一个计时器,并在1000ms内调用一个函数。由于它是以这种方式编写的,因此在1000ms内执行的函数可以识别变量“redirect_url”并可以对其进行操作。