2013-04-04 88 views
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); 
}); 

我试图让选中的值在点击后变为“whitetheme”。

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

+1

是否在点击事件后返回空字符串?注意到你正在更新之前记录它的值... – cdlong 2013-04-04 23:16:05

回答

3

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

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

你究竟想达到什么目的?

+0

我试图设置变量“选中”一个字符串值 – swaggyP 2013-04-04 23:27:48

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); 

}) 
}); 
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 
}); 
+0

我需要在函数外记录该值,尽管 – swaggyP 2013-04-04 23:28:38

+0

您也可以将值记录到外部,但直到用户点击'whitetheme'元素后才会更新该值,因此您的空字符串将被打印出来。 – dinjas 2013-04-04 23:34:40