jquery - 使用 JavaScript (jQuery) 进行排序嗨,有人可以帮我理解为什么这个脚本只能在 safari 上运行,它的目的是让表格从最新到最旧,但我不明白为什么它只能在 safari 中正常运行
显然我希望它可以与 Chrome、firefox 和 edge 一起使用
我已经尝试了每个 jquery 版本,但它只适用于 safari
问题描述
嗨,有人可以帮我理解为什么这个脚本只能在 safari 上运行,它的目的是让表格从最新到最旧,但我不明白为什么它只能在 safari 中正常运行
显然我希望它可以与 Chrome、firefox 和 edge 一起使用
我已经尝试了每个 jquery 版本,但它只适用于 safari
$('tr.Entries').each(function() {
var $this = $(this),
t = this.cells[1].textContent.split('-');
$this.data('_ts', new Date(t[2], t[1] - 1, t[0]).getTime());
}).sort(function(a, b) {
return $(a).data('_ts') > $(b).data('_ts');
}).appendTo('tbody');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="table-bordered" border="1">
<thead>
<tr class="Headers">
<th>Number</th>
<th>uploaded</th>
<th>file</th>
</tr>
</thead>
<tbody>
<tr class="Entries" data-id="13">
<td data-field-type="string">1234</td>
<td data-field-type="date">01/04/2015 03:21:44pm</td>
<td>9393939828282</td>
</tr>
<tr class="Entries" data-id="24">
<td data-field-type="string">1352</td>
<td data-field-type="date">04/10/2012 12:31:09pm</td>
<td>1238383</td>
</tr>
<tr class="Entries" data-id="8">
<td data-field-type="string">1124</td>
<td data-field-type="date">13/05/2014 02:51:12pm</td>
<td>0934899</td>
</tr>
<tr class="Entries" data-id="23">
<td data-field-type="string">1652</td>
<td data-field-type="date">07/11/2013 08:19:59pm</td>
<td>929474900</td>
</tr>
<tr class="Entries" data-id="23">
<td data-field-type="string">1652</td>
<td data-field-type="date">04/12/2013 07:21:43pm</td>
<td>8837483</td>
</tr>
</tbody>
</table>
zone1 = [
{ name: 'Capot avant', checked: false },
{ name: 'Pare-chocs avant', checked: false }
]
get selectedZone1() {enter code here
return this.zone1.filter(item => item.checked).map(item => item.name)
}
<!-- zone 1 -->
<ul>
<h3 class="titre font-weight-bold zone"><b>ZONE 1</b></h3>
<li *ngFor="let item of zone1">
<mat-checkbox [(ngModel)]="item.checked">
{{item.name}}
</mat-checkbox>
</li>
</ul>
解决方案
也许你打算这样做?
const re = /(\d{2})\/(\d{2})\/(\d{4}) (\d{2})\:(\d{2})\:(\d{2})(\w{2})/
const makeDate = ($tr) => {
const [, dd, mm, yyyy, hh, mi, ss, mer] = $("[data-field-type=date]", $tr).eq(0).text()
.match(re);
const dString = `${mm}/${dd}/${yyyy} ${hh}:${mi}:${ss} ${mer.toUpperCase()}`;
return new Date(dString).getTime()
};
const tbSort = tableId => {
const $tb = $("#" + tableId + " tbody");
$tb.append(
$('tr.Entries', $tb).sort((a, b) => makeDate($(b)) - makeDate($(a))) // descending
);
};
tbSort("table1")
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="table-bordered" id="table1" border="1">
<thead>
<tr class="Headers">
<th>Number</th>
<th>uploaded</th>
<th>file</th>
</tr>
</thead>
<tbody>
<tr class="Entries" data-id="13">
<td data-field-type="string">1234</td>
<td data-field-type="date">01/04/2015 03:21:44pm</td>
<td>9393939828282</td>
</tr>
<tr class="Entries" data-id="24">
<td data-field-type="string">1352</td>
<td data-field-type="date">04/10/2012 12:31:09pm</td>
<td>1238383</td>
</tr>
<tr class="Entries" data-id="8">
<td data-field-type="string">1124</td>
<td data-field-type="date">13/05/2014 02:51:12pm</td>
<td>0934899</td>
</tr>
<tr class="Entries" data-id="23">
<td data-field-type="string">1652</td>
<td data-field-type="date">07/11/2013 08:19:59pm</td>
<td>929474900</td>
</tr>
<tr class="Entries" data-id="23">
<td data-field-type="string">1652</td>
<td data-field-type="date">04/12/2013 07:21:43pm</td>
<td>8837483</td>
</tr>
</tbody>
</table>
推荐阅读
- azure-devops - 导入到 azure 时如何自动更新 git 存储库?
- autocomplete - 如何使 zsh 函数的自动建议使用语法突出显示
- java - 当我尝试通过“javac”命令编译 file.java 时,它给了我“找不到文件”错误,尽管我已经完成了 JDK 的路径和变量
- java - ClassA 上的 Mockito,模拟 ClassB 的修改状态
- puppeteer - 在 Ubuntu 上使用 Puppeteer 会显示使用 Ubuntu 的网站吗?
- google-data-studio - Data Studio(Golang RE2):如何将字符串中每个单词的首字母大写
- java - 需要 Retrofi2 Android HTTP 方法注解(例如,@GET、@POST 等)
- java - Java 如何区分单链表和双链表?
- c - char* 数组的隐含衰减是什么?
- java - 这个算法的时间复杂度是多少?
嗨,有人可以帮我理解为什么这个脚本只能在 safari 上运行,它的目的是让表格从最新到最旧,但我不明白为什么它只能在 safari 中正常运行
显然我希望它可以与 Chrome、firefox 和 edge 一起使用
我已经尝试了每个 jquery 版本,但它只适用于 safari
问题描述
嗨,有人可以帮我理解为什么这个脚本只能在 safari 上运行,它的目的是让表格从最新到最旧,但我不明白为什么它只能在 safari 中正常运行
显然我希望它可以与 Chrome、firefox 和 edge 一起使用
我已经尝试了每个 jquery 版本,但它只适用于 safari
$('tr.Entries').each(function() {
var $this = $(this),
t = this.cells[1].textContent.split('-');
$this.data('_ts', new Date(t[2], t[1] - 1, t[0]).getTime());
}).sort(function(a, b) {
return $(a).data('_ts') > $(b).data('_ts');
}).appendTo('tbody');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="table-bordered" border="1">
<thead>
<tr class="Headers">
<th>Number</th>
<th>uploaded</th>
<th>file</th>
</tr>
</thead>
<tbody>
<tr class="Entries" data-id="13">
<td data-field-type="string">1234</td>
<td data-field-type="date">01/04/2015 03:21:44pm</td>
<td>9393939828282</td>
</tr>
<tr class="Entries" data-id="24">
<td data-field-type="string">1352</td>
<td data-field-type="date">04/10/2012 12:31:09pm</td>
<td>1238383</td>
</tr>
<tr class="Entries" data-id="8">
<td data-field-type="string">1124</td>
<td data-field-type="date">13/05/2014 02:51:12pm</td>
<td>0934899</td>
</tr>
<tr class="Entries" data-id="23">
<td data-field-type="string">1652</td>
<td data-field-type="date">07/11/2013 08:19:59pm</td>
<td>929474900</td>
</tr>
<tr class="Entries" data-id="23">
<td data-field-type="string">1652</td>
<td data-field-type="date">04/12/2013 07:21:43pm</td>
<td>8837483</td>
</tr>
</tbody>
</table>
zone1 = [
{ name: 'Capot avant', checked: false },
{ name: 'Pare-chocs avant', checked: false }
]
get selectedZone1() {enter code here
return this.zone1.filter(item => item.checked).map(item => item.name)
}
<!-- zone 1 -->
<ul>
<h3 class="titre font-weight-bold zone"><b>ZONE 1</b></h3>
<li *ngFor="let item of zone1">
<mat-checkbox [(ngModel)]="item.checked">
{{item.name}}
</mat-checkbox>
</li>
</ul>
解决方案
也许你打算这样做?
const re = /(\d{2})\/(\d{2})\/(\d{4}) (\d{2})\:(\d{2})\:(\d{2})(\w{2})/
const makeDate = ($tr) => {
const [, dd, mm, yyyy, hh, mi, ss, mer] = $("[data-field-type=date]", $tr).eq(0).text()
.match(re);
const dString = `${mm}/${dd}/${yyyy} ${hh}:${mi}:${ss} ${mer.toUpperCase()}`;
return new Date(dString).getTime()
};
const tbSort = tableId => {
const $tb = $("#" + tableId + " tbody");
$tb.append(
$('tr.Entries', $tb).sort((a, b) => makeDate($(b)) - makeDate($(a))) // descending
);
};
tbSort("table1")
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="table-bordered" id="table1" border="1">
<thead>
<tr class="Headers">
<th>Number</th>
<th>uploaded</th>
<th>file</th>
</tr>
</thead>
<tbody>
<tr class="Entries" data-id="13">
<td data-field-type="string">1234</td>
<td data-field-type="date">01/04/2015 03:21:44pm</td>
<td>9393939828282</td>
</tr>
<tr class="Entries" data-id="24">
<td data-field-type="string">1352</td>
<td data-field-type="date">04/10/2012 12:31:09pm</td>
<td>1238383</td>
</tr>
<tr class="Entries" data-id="8">
<td data-field-type="string">1124</td>
<td data-field-type="date">13/05/2014 02:51:12pm</td>
<td>0934899</td>
</tr>
<tr class="Entries" data-id="23">
<td data-field-type="string">1652</td>
<td data-field-type="date">07/11/2013 08:19:59pm</td>
<td>929474900</td>
</tr>
<tr class="Entries" data-id="23">
<td data-field-type="string">1652</td>
<td data-field-type="date">04/12/2013 07:21:43pm</td>
<td>8837483</td>
</tr>
</tbody>
</table>
推荐阅读
- azure-devops - 导入到 azure 时如何自动更新 git 存储库?
- autocomplete - 如何使 zsh 函数的自动建议使用语法突出显示
- java - 当我尝试通过“javac”命令编译 file.java 时,它给了我“找不到文件”错误,尽管我已经完成了 JDK 的路径和变量
- java - ClassA 上的 Mockito,模拟 ClassB 的修改状态
- puppeteer - 在 Ubuntu 上使用 Puppeteer 会显示使用 Ubuntu 的网站吗?
- google-data-studio - Data Studio(Golang RE2):如何将字符串中每个单词的首字母大写
- java - 需要 Retrofi2 Android HTTP 方法注解(例如,@GET、@POST 等)
- java - Java 如何区分单链表和双链表?
- c - char* 数组的隐含衰减是什么?
- java - 这个算法的时间复杂度是多少?