2010-08-25 78 views
1

這裏是我的jQuery:構建一個javascript變量

jQuery(document).ready(function ($) { 
    $('ul li:first-child').addClass('first_item'); 
    var className = $('.first_item').attr('id'); 
    alert('Date is:'+ className +'.'); 
}); 

然後jQuery的這另一部分,則即時試圖contrust在一個變量:

j(".refreshMe").everyTime(5000, function (i) { 
    j.ajax({ 
     url: "test.php?latest=" + className + "", 
     cache: false, 
     success: function (html) { 
      j(".refreshMe").html(html); 
     } 

其此行:

url: "test.php?latest="+className+"", 

我試圖採取className變量並將其饋入此行。

任何人都可以建議什麼即時做錯了嗎?

回答

0

在我看來,問題僅僅是您在「ready」處理程序中聲明瞭「className」,因此對其他代碼不可見。

拉動聲明離開那裏,並使其全球(雖然見下文):

var className; 

然後在「準備」處理

className = $('.first_item').attr('id'); 

就行刪除var現在,全局變量像那樣肯定有效,但它很醜陋。如果你只是在同一個「ready」處理程序中移動這個「everyTime」的東西,並將變量保持在本地,那可能會更好。

0

在任何一個函數之外聲明var類名,它將有適當的範圍來做你正在嘗試的東西。

0

嘗試從變量去除var關鍵字,使其公開可用:

className = $('.first_item').attr('id'); 

或者你可能要準備處理程序外聲明只是<script>標籤下面這個變量:

var className = null; 
0

問題在於變量className的範圍。在document.ready()函數外部(上面)聲明它,以便className的分數擴展到整個js文件