javascript - 如何使用jquery ajax更改排序箭头升序和降序
问题描述
我正在按升序和降序对数据库中的数据进行排序,排序工作正常,但按钮/箭头除外,我希望它显示在带有 .column-sort 类的按钮内。我希望该按钮在订单为 desc 时显示向上箭头,并在订单为 asc 时显示向下箭头,例如 desc ">" 和 asc "<"。我尝试使用 $('#'+column_sort+'').append(arrowDir) 之类的追加,但如果它被放置在成功/完成()之外,它每次都会追加。在ajax成功的内部按钮元素之后如何使它工作?
html
<table>
<thead class="thead_result">
<tr>
<th class="td-amount"><button class="column-sort" id="income" data-order="desc"></button>Income</th>
<th class="td-amount"><button class="column-sort" id="expense" data-order="desc"></button>Expense</th>
</tr>
</thead>
<tbody class="result"></tbody>
</table>
//js
<script>
$(document).on('click', '.column-sort', function(){
let column_sort = $(this).attr('id');
let order = $(this).data('order');
let arrowDir = '';
if (order == 'desc') {
arrowDir = '<i class="fa fa-angle-up"></i>';
}else{
arrowDir = '<i class="fa fa-angle-down"></i>';
}
let ajax = $.ajax({
url : '/getDaily',
method:'post',
data: {column_sort: column_sort, order: order},
dataType: 'JSON',
});
ajax.done(function(data){
//trying to reset column-sort to have desc ar asc
$('#'+column_sort+'').attr('data-order', data.order);
$('#'+column_sort+'').html(arrowDir);
// data.order value to change desc to asc or desc to asc
let thead = `
<tr>
<th class="td-amount"><button class="column-sort" id="income" data-order="${data.order}"></button>Income</th>
<th class="td-amount"><button class="column-sort" id="expense" data-order="${data.order}"></button>Expense</th>
</tr>
`;
let html = '';
$.each(data.result, function(k, v){
//mydata
});
$('.thead_result').html(thead);
$('.result').html(html);
})
})
</script>
//控制器
public function getDaily(){
$column_sort = $this->request->getPost('column_sort');
$order = $this->request->getPost('order');
if ($order == "desc") {
$order = "asc";
}else{
$order = "desc";
}
foreach($this->model->getDaily() as $row){
$output[] = [
'income' => $row->income,
'expense' => $row->expense,
];
}
return $this->response->setJSON([
'result' => $output,
'order' => $order,
]);
}
解决方案
推荐阅读
- python - 如何成功终止通过子进程运行创建的子进程
- java - 我无法从模块化 Maven 项目(在 IntelliJ 中)的测试目录中运行我的应用程序
- react-native - 使用 react-native-scrollable-tabview 获取数据
- excel - 如何在 VBA 中的 IF 语句中的 Match 语句中对 2 个部分文本(一个或另一个)使用 OR 语句?
- arrays - MongoDB 在具有多个嵌套级别的数组和对象中查找
- bash - bash 脚本中 =<(...) 的语法
- selenium - 您可以在 Cucumber 功能“示例:”部分中使用外部资源吗?
- ios - 原生 ios webview 上的 Webrtc 支持
- hadoop - Hadoop 3.3 和 oozie 5.2.0
- scikit-learn - 我不明白在训练测试拆分和 MLP 回归器中更改随机状态之间的区别