javascript - 位置改变时如何获取列表项的索引值
问题描述
我正在使用 jQuery Sortable,我只想获取列表项的更改索引值。有什么办法吗?现在我正在获取所有索引的价值并更新数据。我想仅获取 li 的更改索引值的位置。这是我的 jquery 脚本
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
$(function () {
$("ul").sortable({
items: "li",
cursor: 'move',
update: function () {
sendOrderToServer();
}
});
function sendOrderToServer() {
var order = [];
$('li').each(function (index, element) {
order.push({
position: index + 1
});
});
$.ajax({
type: "GET",
dataType: "json",
url: `${SiteConfig.staticContentBaseUrl}/sortabletable`,
data: {
order: order,
_token: $('meta[name=csrf-token]').attr('content')
},
success: function (response) {
if (response.status == "success") {
console.log(response);
} else {
console.log(response);
}
}
});
}
});
解决方案
您可以将 jQuery函数与作为事件第二个参数的属性提供的jQuery.index()
函数结合使用。item
update
let $pets = $("#pets"),
$report = $("#report");
$pets.sortable({
update(e, ui){
let $item = ui.item,
index = $pets.children().index($item) + 1;
$report.text( `You ranked ${$item.text()} at number ${index}` );
},
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<h2>Desired Pets: Rank from most desired (top) to least (bottom)</h2>
<ul id="pets">
<li>Cat</li>
<li>Dog</li>
<li>Hamster</li>
<li>Rabbit</li>
<li>Fox</li>
</ul>
<div id="report"></div>
除此之外,您可以将每个项目的索引存储在列表中,然后在更新后进行比较以查看哪些项目更改了位置。您甚至可以使用 jQuery 的.data()来存储项目的先前位置,尽管我认为如果您遵循MVC 设计原则或其中的许多变体,从长远来看,您会得到更好的服务。
推荐阅读
- android - Xamarin.Android 是否有热重载替代方案?
- php - 图片上传错误无法打开流:没有这样的文件或目录,无法移动文件
- angular - 使用 Primeng 显示日期选择器
- sql - 如何通过不断变化来更新 SQL Server 中的标识列?
- sql - 如何根据输入找出在两个给定日期之间有 5 个星期六的年份范围内的哪些月份?
- go - 如何为接受 interface{} 的函数创建类型条件?
- javascript - 将 Mat 实例克隆存储到数组时发生内存泄漏
- python - 如何使用 for 循环将嵌套列表中的所有项目复制到空嵌套列表
- swift - 使用 usePageViewController 旋转 PDF 页面
- java - 如何在java中打印星形图案?