jQuery - Safari/iOS 中 SqlResultsetRowList 上的 $.each
jQuery - $.each on SqlResultsetRowList in Safari/iOS
我正在尝试使用 $.each 来加速 SqlResultsetRowList 的迭代,我目前正在使用 For 循环。这是新代码 -
localDB.transaction(function(transaction){
transaction.executeSql(query, [val], function(transaction, results)
{
var rows = results.rows;
$.each(rows, function(i) {
var row = results.rows.item(i);
});
}
)
});
问题是 i
返回的不是索引而是字符串 "length" 并且它显然在那个时候中断了。
我做了一些进一步的测试,这在 Chrome 中按预期工作。 Chrome 将 SqlResultsetRowList 视为一个数组,但 Safari 不会。是否可以将结果集转换为数组,以便 Safari 可以使用 $.each 对其进行迭代?
试试这个
$.each(rows, function(i, val) {
var row = results.rows.item[i];
console.log('index:' +i+ ' val:' +val);
});
所以这似乎只影响 Safari 和 Mobile Safari,我发现以下内容足以满足我的需求。为可能处于相同情况的任何人添加。
由于 Safari 不会将 SqlResultsetRowList 视为数组,因此您需要从中创建一个数组。
var contacts = [];
for (i = 0; i < results.rows.length; i++){
contacts.push(results.rows.item(i));
}
现在您已经根据结果创建了数组,您可以使用 $.each
.
迭代 contacts
$.each(contacts, function() {
var ID = this.Contact_ID;
//more logic here
});
我正在尝试使用 $.each 来加速 SqlResultsetRowList 的迭代,我目前正在使用 For 循环。这是新代码 -
localDB.transaction(function(transaction){
transaction.executeSql(query, [val], function(transaction, results)
{
var rows = results.rows;
$.each(rows, function(i) {
var row = results.rows.item(i);
});
}
)
});
问题是 i
返回的不是索引而是字符串 "length" 并且它显然在那个时候中断了。
我做了一些进一步的测试,这在 Chrome 中按预期工作。 Chrome 将 SqlResultsetRowList 视为一个数组,但 Safari 不会。是否可以将结果集转换为数组,以便 Safari 可以使用 $.each 对其进行迭代?
试试这个
$.each(rows, function(i, val) {
var row = results.rows.item[i];
console.log('index:' +i+ ' val:' +val);
});
所以这似乎只影响 Safari 和 Mobile Safari,我发现以下内容足以满足我的需求。为可能处于相同情况的任何人添加。
由于 Safari 不会将 SqlResultsetRowList 视为数组,因此您需要从中创建一个数组。
var contacts = [];
for (i = 0; i < results.rows.length; i++){
contacts.push(results.rows.item(i));
}
现在您已经根据结果创建了数组,您可以使用 $.each
.
contacts
$.each(contacts, function() {
var ID = this.Contact_ID;
//more logic here
});