确定jQuery数组中的项目数并循环它们?

时间:2012-02-07 15:55:28

标签: javascript jquery ajax

我有一个AJAX脚本,它接收PHP返回的mySQL查询中的字符串。 然后解析该字符串并将其放入Jquery中的数组中,并使用.html()将结果打印到屏幕上

此数组的长度从0项到多数不等,我如何计算数组中的项目然后循环并将它们打印到屏幕上。

根据以下建议,这是我的UPDATED代码,虽然我仍然不确定for循环是否在.html()函数内部或外部?

更新代码包括.each()

UPDATE 2:将.html()函数中的(this)替换为我想要写入文本的元素并且它正在部分工作,问题是它现在只打印最后一项数组?

更新3:似乎你只能运行一个.html()函数,例如,如果我在返回我的数组中最后一项的那一个下添加另一个.html()语句它现在只会在屏幕上回显测试值。

$("#n_detail").html(partsArray[index]+"<br />").addClass('jText').fadeTo(900,1);
$("#n_detail").html("Test").addClass('jText').fadeTo(900,1);    

它只打印“测试”,而不是像以前那样打印数组中的最后一项?

<script type="text/javascript">
       $(document).ready(function() {
        $("#primary").change(function()
            {                                
             $.post("lib/ajax_load_job_detail.php",{ _primaryid_n:$(this).val() } ,function(data)
            {
            var string = data;
            var partsArray = string.split('|');
               $("#n_detail").fadeTo(200,0.1,function() //start fading the messagebox
               {
                 $.each(partsArray, function(index) {
                        $("#n_detail").html(partsArray[index]+"<br />").addClass('jText').fadeTo(900,1);
                    });     
                });
              });
            });
           });

数组的样本值partsArray [0] 12/12/2005,partsArray [1]这是12月份的样本注释等......

4 个答案:

答案 0 :(得分:2)

partsArray.length

将为您提供数组中的项目。您可以使用

循环
for(var i=0;i<partsArray.length;i++){

或使用jquery插件

$.forEach

答案 1 :(得分:1)

这是一个典型的循环结构:

var partsArray = string.split('|');
for(var x=0;x<partsArray.length;x++) {
    //...your code ...
    //x is the index., so partsArray[x] is the current element
}

答案 2 :(得分:1)

如果要遍历数组,则可以使用jQuery函数each()。

以下是文档的链接:http://api.jquery.com/jQuery.each/

以下是使用您的数组的文档示例:

$.each(partsArray, function(index, value) { 
  alert(index + ': ' + value); 
});

编辑 - 根据OP添加到另一个答案的评论,这是使用OP代码的更好示例:

$.each(partsArray, function(index, value) { 
  value.addClass('jText').fadeTo(900,1);
});

编辑2 - 您需要循环内每个元素的代码部分,并根据您的编辑我认为它应该如下所示:

$.each(partsArray, function(index) {
    $(this).append(partsArray[index]+"br />").addClass('jText').fadeTo(900,1);
}

干杯,

詹姆斯

答案 3 :(得分:0)

使用for ... in,它明显快于jQuery的$.each方法,并且差别不大 - 它为您提供i中项目的索引,而不是值。

for (var i in partsArray)
{
    // You can access values via...
    console.log( partsArray[i] );

    // Alternatively, this will make it an exact clone of $.each
    var value = partsArray[i];
    console.log( value );
}