我有一个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月份的样本注释等......
答案 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 );
}