Javascript 如何在拖放Jquery UI上更改数据属性?
我制作了一个jQuery函数,用户可以在其中拖放div。但我想在用户拖放它们时更改它们的数据属性,例如-Javascript 如何在拖放Jquery UI上更改数据属性?,javascript,jquery,jquery-ui-sortable,Javascript,Jquery,Jquery Ui Sortable,我制作了一个jQuery函数,用户可以在其中拖放div。但我想在用户拖放它们时更改它们的数据属性,例如- <div data-num="1">one</div> <div data-num="2">Two</div> <div data-num="3">Three</div> <div data-num="4">Four</di
<div data-num="1">one</div>
<div data-num="2">Two</div>
<div data-num="3">Three</div>
<div data-num="4">Four</div>
为了实现您的目标,您可以将事件处理程序挂接到可排序表的
stop
事件。然后,您可以遍历#app
中的每个子div
,并更新数据num
,以匹配元素的索引。试试这个:
jQuery($=>{
$(“#应用程序”)。可排序({
停止:()=>{
$('#app>div')。每个((i,el)=>$(el.data('num',i+1));
}
});
//仅用于测试。。。
$('button')。在('click',()=>{
$('#app>div')。每个((i,el)=>console.log(`${el.textContent}-${$(el.data('num')}'));
});
});代码>
一个
两个
三
四
测试
我们也可以通过使用项目索引来实现这一点
jQuery("#app").sortable({
update: function(e, ui) {
jQuery("#app div").each(function(i, elm) {
$elm = jQuery(elm);
var elindex = $elm.index("#app div");
$elm.attr("data-num", elindex+1);
});
}
});
感谢您的帮助,它正在更改控制台中的值,但根本不更改数据属性。这是正确的行为。jQuery只更改内存中的数据属性。只要您总是使用data()
来获取/设置值(并且永远不要使用attr()
)-这是更好的做法,那么代码就可以正常工作
jQuery("#app").sortable({
update: function(e, ui) {
jQuery("#app div").each(function(i, elm) {
$elm = jQuery(elm);
var elindex = $elm.index("#app div");
$elm.attr("data-num", elindex+1);
});
}
});