2010-08-25 43 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文件