2013-04-04 69 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