Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何仅使用Jquery对div列表进行排序?_Javascript_Jquery_Sorting_Each_Bubble Sort - Fatal编程技术网

Javascript 如何仅使用Jquery对div列表进行排序?

Javascript 如何仅使用Jquery对div列表进行排序?,javascript,jquery,sorting,each,bubble-sort,Javascript,Jquery,Sorting,Each,Bubble Sort,我有一个包含很多元素的div列表,我想做很多排序: <div id="lista-terremoti" style=""> <div class="eq-lista"> <div class="mark-eq-lista"><span style="display:none">1536017841000</span></div>

我有一个包含很多元素的div列表,我想做很多排序:

            <div id="lista-terremoti" style="">
              <div class="eq-lista">
                <div class="mark-eq-lista"><span style="display:none">1536017841000</span></div>
                <div class="dati-eq">
                  <div class="eq-lista-row" style="">
                    <div class="eq-lista-data" style="">2018-09-03&nbsp;&nbsp;23:37:21 UTC</div>
                    <div class="eq-lista-luogo">Al largo dell'Ecuador</div>
                    <div id="magn-ipo-link">
                      <div class="eq-lista-magn">4.9 M</div>
                      <div class="eq-lista-ipo">40 Km</div>
                      <div class="eq-lista-link"><a href="#" rel="nofollow">Dettagli</a></div>
                    </div>
                  </div>
                  <div class="ulteriore" style="display:none"></div>
                </div>
              </div>
              <div class="eq-lista">
                <div class="mark-eq-lista"><span style="display:none">1536017747000</span></div>
                <div class="dati-eq">
                  <div class="eq-lista-row" style="">
                    <div class="eq-lista-data" style="">2018-09-03&nbsp;&nbsp;23:35:47 UTC</div>
                    <div class="eq-lista-luogo">Isole Marianne</div>
                    <div id="magn-ipo-link">
                      <div class="eq-lista-magn">5 M</div>
                      <div class="eq-lista-ipo">200 Km</div>
                      <div class="eq-lista-link"><a href="#" rel="nofollow">Dettagli</a></div>
                    </div>
                  </div>
                  <div class="ulteriore" style="display:none"></div>
                </div>
              </div>
              <div class="eq-lista">
                <div class="mark-eq-lista"><span style="display:none">1536015211000</span></div>
                <div class="dati-eq">
                  <div class="eq-lista-row" style="">
                    <div class="eq-lista-data" style="">2018-09-03&nbsp;&nbsp;22:53:31 UTC</div>
                    <div class="eq-lista-luogo">California centrale, Stati Uniti</div>
                    <div id="magn-ipo-link">
                      <div class="eq-lista-magn">2.5 M</div>
                      <div class="eq-lista-ipo">15 Km</div>
                      <div class="eq-lista-link"><a href="#" rel="nofollow">Dettagli</a></div>
                    </div>
                  </div>
                  <div class="ulteriore" style="display:none"></div>
                </div>
              </div>
              <div class="eq-lista">
                <div class="mark-eq-lista"><span style="display:none">1536015088000</span></div>
                <div class="dati-eq">
                  <div class="eq-lista-row" style="">
                    <div class="eq-lista-data" style="">2018-09-03&nbsp;&nbsp;22:51:28 UTC</div>
                    <div class="eq-lista-luogo">Alaska meridionale</div>
                    <div id="magn-ipo-link">
                      <div class="eq-lista-magn">2.1 M</div>
                      <div class="eq-lista-ipo">74.6 Km</div>
                      <div class="eq-lista-link"><a href="#" rel="nofollow">Dettagli</a></div>
                    </div>
                  </div>
                  <div class="ulteriore" style="display:none"></div>
                </div>
              </div>
            </div>

我希望你能帮助我…非常感谢

我会将时间戳的获取和大小的获取抽象为单独的函数,以保持代码的干爽。然后,您可以按

items.sort((a, b) => (
  eqToTimestamp(a) - eqToTimestamp(b)
  || eqToMagn(a) - eqToMagn(b)
));
请注意,时间戳比较结果通常不是0,在这种情况下,大小的差异很少对列表顺序产生影响

const eqToTimestamp=eq=>Number(eq.children[0].textContent);
常数eqToMagn=eq=>(
数字(eq.querySelector('.eq lista magn').textContent.match(/\S+/))
);
常量项=$('#lista terremoti>.eq lista').get();
项目排序((a,b)=>(
eqToTimestamp(a)-eqToTimestamp(b)
||eqToMagn(b)-eqToMagn(a)
));
const div_list=$('lista terremoti');
items.forEach(item=>div_list.append(item))

1536017841000
2018-09-03 23:37:21 UTC
厄瓜多尔拉戈酒店
4.9米
40公里
1536017747000
2018-09-03 23:35:47 UTC
伊索尔·玛丽安
5米
200公里
1536015211000
2018-09-03 22:53:31 UTC
加利福尼亚中央车站
2.5米
15公里
1536015088000
2018-09-03 22:51:28 UTC
阿拉斯加子午线
2.1米
74.6公里

我将时间戳的获取和幅度的获取抽象为单独的函数,以保持代码的干爽。然后,您可以按

items.sort((a, b) => (
  eqToTimestamp(a) - eqToTimestamp(b)
  || eqToMagn(a) - eqToMagn(b)
));
请注意,时间戳比较结果通常不是0,在这种情况下,大小的差异很少对列表顺序产生影响

const eqToTimestamp=eq=>Number(eq.children[0].textContent);
常数eqToMagn=eq=>(
数字(eq.querySelector('.eq lista magn').textContent.match(/\S+/))
);
常量项=$('#lista terremoti>.eq lista').get();
项目排序((a,b)=>(
eqToTimestamp(a)-eqToTimestamp(b)
||eqToMagn(b)-eqToMagn(a)
));
const div_list=$('lista terremoti');
items.forEach(item=>div_list.append(item))

1536017841000
2018-09-03 23:37:21 UTC
厄瓜多尔拉戈酒店
4.9米
40公里
1536017747000
2018-09-03 23:35:47 UTC
伊索尔·玛丽安
5米
200公里
1536015211000
2018-09-03 22:53:31 UTC
加利福尼亚中央车站
2.5米
15公里
1536015088000
2018-09-03 22:51:28 UTC
阿拉斯加子午线
2.1米
74.6公里

keyA和keyB是表示元素的jQuery对象,而不是从这些元素中获取的值SKEYA和keyB是表示元素的jQuery对象,而不是从这些元素中获取的值我尝试了只使用大小排序的代码,但不起作用。。。为什么?“匹配”是个问题……但我不知道如何使用RegExSee编辑,使用
项进行排序我尝试了你的代码,只使用大小排序,但不起作用。。。为什么?“匹配”是个问题……但我不知道如何使用RegExSee编辑,使用
项进行排序