0

我在通过 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);
});

我试图在单击后将 selected 的值更改为“whitetheme”。

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

4

3 回答 3

3

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

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

你到底想达到什么目的?

于 2013-04-04T23:16:14.107 回答
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
});
于 2013-04-04T23:19:28.060 回答
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);

})
});
于 2013-04-04T23:17:47.517 回答