我正在使用JQuery.each迭代一些项目,但我想知道何时停止.
这是我现在的代码:
$j(".form-builder").each(function(){
data_json+='{ "type":"'+$j(this).attr("type")+'"';
// IF LAST ITERATION
// data_json += '}';
// ELSE
//data_json+='},';
});
Run Code Online (Sandbox Code Playgroud)
我怎么能弄清楚它是否是最后一次迭代?
回调的第一个参数each是数组中的索引.您可以将其与数组的长度进行比较.
但是,由于您似乎正在尝试构建一个json字符串,我只是构建一个javascript对象然后JSON.stringify它并省去了麻烦.
例:
var arr = [];
$j(".form-builder").each(function(){
arr.push({ type: $j(this).attr("type") });
});
var data_json = JSON.stringify(arr);
Run Code Online (Sandbox Code Playgroud)
为了证明这将产生相同的结果(保存一些不重要的空白区域)作为手动构建字符串(并作为使用新代码段功能的借口):
$j = $;
// Built as an array of objects and then stringify
var arr = [];
$j(".form-builder").each(function(){
arr.push({ type: $j(this).attr("type") });
});
var data_json = JSON.stringify(arr);
alert("built as an array: " + data_json);
// Built with string concat
var items = $j(".form-builder");
var count = items.length;
data_json = "[";
items.each(function(i){
data_json+='{ "type":"'+$j(this).attr("type")+'"';
if (i<count -1) {
data_json+='},';
}
else {
data_json += '}';
}
});
data_json += "]";
alert("built with string concat: " + data_json);Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-builder" type="foo"></div>
<div class="form-builder" type="bar"></div>
<div class="form-builder" type="la"></div>
<div class="form-builder" type="lala"></div>Run Code Online (Sandbox Code Playgroud)