从 sortable table 获取一个 table 对象
Get a table object from sortable table
假设我有一个任意长度的 table,我可以移动它们,我想获得我释放鼠标的 table 元素,我有鼠标为我的 table 从 jquery + jquery.sortable 释放等。
这种工作还不是 100%,如果你移动它,它会在列表中排在第一位,但它和我的 atm 一样接近,任何建议都适用,tbody 是我的 table,它不过可以是任何 table。我放弃了 (x,y) 坐标
下面是一个试图展示我的想法的代码示例:
<script type="text/javascript">
var arr2;
$('tbody').sortable({
start: function(e, ui) {
arr2 = ($.map($(this).find('tr'), function(el) {
return $(el).attr('id');
}));
}
});
$('tbody').sortable({
stop: function(e, ui) {
newArr = ($.map($(this).find('tr'), function(el) {
return $(el).attr('id');
}));
function oldArr(arr) {
var i=0, res = [];
while(i<arr.length && typeof(arr2[i]) !== 'undefined'){
res.push(arr[i]);
i++;
}
return res;
}
outOld = oldArr(arr2);
function findMovedFrom(arr, arr2) {
if(arr.length == arr2.length){
for(j = 0; j < arr.length; j++){
if(arr[j] !== arr2[j]){
if(arr[j] == arr2[j-1]){
return arr[j];
}else{
return arr2[j];
}
}
}
}
}
alert(" from \n"+ findMovedFrom(outOld,newArr) + "\n to before \n" + newArr[(newArr.indexOf(findMovedFrom(outOld,newArr))) + 1] + "\n" );
}
});
</script>
Finnaly 解决得一团糟,如果有人想在 sortable table 上找到你从哪里拖拽一个对象到哪里,tbody 是你的 table 行,非常感谢@Twisty
<script type="text/javascript">
var arr2;
$('tbody').sortable({
start: function(e, ui) {
arr2 = ($.map($(this).find('tr'), function(el) {
return $(el).attr('id');
}));
}
});
$('tbody').sortable({
stop: function(e, ui) {
newArr = ($.map($(this).find('tr'), function(el) {
return $(el).attr('id');
}));
function oldArr(arr) {
var i=0, res = [];
while(i<arr.length && typeof(arr2[i]) !== 'undefined'){
res.push(arr[i]);
i++;
}
return res;
}
outOld = oldArr(arr2);
function findMovedFrom(arr, arr2) {
if(arr.length == arr2.length){
for(j = 0; j < arr.length; j++){
if(arr[j] !== arr2[j]){
if(arr[j] == arr2[j-1] || arr2[j-1] === null || arr2[j-1] === undefined){
return arr[j];
}else{
return arr2[j];
}
}
}
}
}
alert("from \n"+ findMovedFrom(outOld,newArr) + "\nto before\n" + newArr[(newArr.indexOf(findMovedFrom(outOld,newArr))) + 1] + "\n");
}
});
</script>
假设我有一个任意长度的 table,我可以移动它们,我想获得我释放鼠标的 table 元素,我有鼠标为我的 table 从 jquery + jquery.sortable 释放等。
这种工作还不是 100%,如果你移动它,它会在列表中排在第一位,但它和我的 atm 一样接近,任何建议都适用,tbody 是我的 table,它不过可以是任何 table。我放弃了 (x,y) 坐标
下面是一个试图展示我的想法的代码示例:
<script type="text/javascript">
var arr2;
$('tbody').sortable({
start: function(e, ui) {
arr2 = ($.map($(this).find('tr'), function(el) {
return $(el).attr('id');
}));
}
});
$('tbody').sortable({
stop: function(e, ui) {
newArr = ($.map($(this).find('tr'), function(el) {
return $(el).attr('id');
}));
function oldArr(arr) {
var i=0, res = [];
while(i<arr.length && typeof(arr2[i]) !== 'undefined'){
res.push(arr[i]);
i++;
}
return res;
}
outOld = oldArr(arr2);
function findMovedFrom(arr, arr2) {
if(arr.length == arr2.length){
for(j = 0; j < arr.length; j++){
if(arr[j] !== arr2[j]){
if(arr[j] == arr2[j-1]){
return arr[j];
}else{
return arr2[j];
}
}
}
}
}
alert(" from \n"+ findMovedFrom(outOld,newArr) + "\n to before \n" + newArr[(newArr.indexOf(findMovedFrom(outOld,newArr))) + 1] + "\n" );
}
});
</script>
Finnaly 解决得一团糟,如果有人想在 sortable table 上找到你从哪里拖拽一个对象到哪里,tbody 是你的 table 行,非常感谢@Twisty
<script type="text/javascript">
var arr2;
$('tbody').sortable({
start: function(e, ui) {
arr2 = ($.map($(this).find('tr'), function(el) {
return $(el).attr('id');
}));
}
});
$('tbody').sortable({
stop: function(e, ui) {
newArr = ($.map($(this).find('tr'), function(el) {
return $(el).attr('id');
}));
function oldArr(arr) {
var i=0, res = [];
while(i<arr.length && typeof(arr2[i]) !== 'undefined'){
res.push(arr[i]);
i++;
}
return res;
}
outOld = oldArr(arr2);
function findMovedFrom(arr, arr2) {
if(arr.length == arr2.length){
for(j = 0; j < arr.length; j++){
if(arr[j] !== arr2[j]){
if(arr[j] == arr2[j-1] || arr2[j-1] === null || arr2[j-1] === undefined){
return arr[j];
}else{
return arr2[j];
}
}
}
}
}
alert("from \n"+ findMovedFrom(outOld,newArr) + "\nto before\n" + newArr[(newArr.indexOf(findMovedFrom(outOld,newArr))) + 1] + "\n");
}
});
</script>