按字母顺序排序Jquery列表
Sorting a Jquery list alphabetically
我正在从外部源提取数据,数据似乎在每次页面刷新后以不同的顺序出现。我不确定这是否与我的jquery或缺乏。或者如果它与我用来收集数据的谷歌财务数据有关。理想情况下,我希望它按照第一列的字母顺序排序。
我坚持认为必须有一种方法来排序数组,而不会随机填充列表。JSfiddle:
https://jsfiddle.net/vkf0jhpq/$(document).ready(function () {
for (var i = 0; i < gstock.length; i++) {
$.getJSON("https://finance.google.com/finance/info?client=ig&q=" + gstock[i] + "&callback=?", function (response) {
var stockInfo1 = response[0];
var divContainer = $('*[data-symbol="' + stockInfo1.t + '"]');
var percentStock = !isNaN(stockInfo1.c) && !isNaN(stockInfo1.l) && stockInfo1.l ? ((parseFloat(stockInfo1.c)/parseFloat(stockInfo1.l)) * 100) : undefined;
您的问题是您正在进行异步调用以获取每个股票(意味着它们将同时运行),然后在调用成功时附加每个项目。
这意味着每个条目将根据执行请求所花费的时间来追加,因此如果第一个请求比第二个请求花费的时间稍长,第二个请求将在第一个请求之前显示(这就是为什么它们看起来是随机顺序的)。
阻止这种情况并保持顺序的一种方法是使调用同步,但我认为这会使页面加载时间更长。
另一种方法是使用.when
,这样您就可以使用ajax来填充var,然后一旦所有调用完成,您可以将结果var按您想要的顺序排序,然后将它们附加到文档
这是一个快速示例,展示了将附加项保持与gstock
var
你不能在跨域值中使用$.ajax()的同步调用。你必须使用这个语法
$.when( $.getJSON( YOUR_RESOURCE ) ).then( function( data, status, jqXHR ) {
alert( jqXHR.status );
});
in accordance with http://api.jquery.com/jQuery.when/
更新:参见以下示例
$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) ).done(function( a1, a2 ) {
// a1 and a2 are arguments resolved for the page1 and page2 ajax requests, respectively.
// Each argument is an array with the following structure: [ data, statusText, jqXHR ]
var data = a1[ 0 ] + a2[ 0 ]; // a1[ 0 ] = "Whip", a2[ 0 ] = " It"
if ( /Whip It/.test( data ) ) {
alert( "We got what we came for!" );
}
});
更新2:
jsfiddle示例(仅console.log但工作)https://jsfiddle.net/k41y4yqu/1/
相关文章:
- 需要Jquery列表筛选帮助
- 如何让li项目在这个jQuery列表中滑动和/或淡出视图
- Jquery列表拖放
- 在PHP循环中动态创建jQuery列表视图
- ajax更新后jQuery列表刷新
- 您能否按字母顺序对从 JSON 文件动态创建的 jQuery 列表进行排序
- 给定两个连接的可排序 JQuery 列表,我怎么知道元素被放在哪个容器上
- 可通过Ajax从回显列表中排序jQuery列表
- jQuery列表中每个产品的基于悬停的弹出事件
- jquery列表项类切换
- 如何动态添加<李>jquery列表中的标记
- Jquery列表内部属性子选择
- 如何使用windows phone 8 c#中的jQuery列表功能
- JQuery列表追加项不可选择
- 当鼠标悬停在HTML/JS/JQUERY列表上时,图像弹出
- 如何从JQuery列表中获取JSON值
- JQuery列表下拉菜单问题
- 组排序JQuery列表元素
- 重置后,jquery列表使用connectWith停止工作
- 按字母顺序排序Jquery列表