在函数外返回变量

时间:2013-04-04 23:12:57

标签: jquery return

我在通过jQuery函数返回变量时遇到了问题。

$(document).ready(function () {
    var selected = "";

    $('.whitetheme').on('click', function () {
        $(this).effect("highlight", {}, 2000);
        selected = "whitetheme";
        return selected;

        $('.blacktheme').fadeOut(1500);
        $('.redtheme').fadeOut(1500);

    })

    console.log(selected);
});

我试图在点击后将选中的值更改为“whitetheme”。

现在,log函数返回一个空字符串。

3 个答案:

答案 0 :(得分:3)

您正在绑定一个事件处理程序,它将(并且将被调用)更改变量值。但是,在执行console.log之前,事件不会发生,因此您看不到更新的值。

此外,您的blackthemeredtheme类不会被淡出,因为该代码部分无法访问。

你到底想要达到什么目的?

答案 1 :(得分:2)

尝试稍微更改一下,以便在点击后打开你的console.log。

$(document).ready(function () {
    var selected = "";

    $('.whitetheme').on('click', function () {
        $(this).effect("highlight", {}, 2000);
        selected = "whitetheme";
        // return selected; don't need this or the next 2 lines won't execute

        $('.blacktheme').fadeOut(1500);
        $('.redtheme').fadeOut(1500);

        console.log("selected: "+selected);
    });
    // console.log(selected); moved above
});

答案 2 :(得分:0)

继续上面的问题/评论:

$(document).ready(function() {

var selected = "";

$('.whitetheme').on('click', function(){
$(this).effect("highlight", {}, 2000);
selected = "whitetheme";

/*Moved this line*/
console.log(selected);

return selected;
$('.blacktheme').fadeOut(1500);
$('.redtheme').fadeOut(1500);

})
});