2015-01-20 3 views
0

Я создал question вчера, чтобы помочь мне найти новый индекс в <tr> или <li> когда он был перемещен с помощью Jquery UI сопротивления & функциональности падения, и это работает отлично :)Jquery индекс строки таблицы после переезда

что-то Я не думал об этом и пытался выяснить сегодня утром, это ... Как я могу найти index из <tr> или <li>, который смещается вверх или вниз.

EG: Учитывая приведенную ниже таблицу, если я переведу «электронную почту» в позицию 1, «другое» будет перенесено на index из 2. Как я могу предупредить это значение и его идентификатор?

+--------+------------------+ 
| Ref ID | Issue relates to | 
+--------+------------------+ 
| 9342 | Other   | 
| 9392 | CRM    | 
| 9394 | CRM    | 
| 9308 | eMail   | 
| 9365 | CRM    | 
+--------+------------------+ 

Вот FIDDLE я играл с.

Спасибо вам заранее, ребята.

Майк

EDIT: Итак, я просто перемещая их вокруг немного больше, и если вы перемещаете другую строку выше тех, которые мы только что переехали, «Другой» теперь будет в index 3. Yikes! ! Сложнее для меня, когда я смотрю на это.

ответ

0

Так что я, вероятно, не фраза на мой вопрос правильно, но Мне удалось получить то, что я хотел, просто проверив index и RefID всего rows после перемещения им.

Мой код теперь выглядит следующим образом:

$(document).ready(function() { 

    $('tbody').addClass("DragMe"); 

    $('.DragMe').sortable({ 
     disabled: false, 
     axis: 'y', 
     items: "> tr:not(:first)", 
     forceHelperSize: true, 
     update: function (event, ui) { 
      var Newpos = ui.item.index(); 
      var RefID = $('tr').find('td:first').html(); 


      //alert("Position " + Newpos + "..... RefID: " + RefID); 
      $("#GridView1 tr:has(td)").each(function() { 
       var RefID = $(this).find("td:eq(0)").html(); 
       var NewPosition = $("tr").index(this); 
        alert(RefID + " " + NewPosition); 

      }); 

     } 
    }).disableSelection(); 
}); 

А вот рабочая FIDDLE

Спасибо за вашу помощь!

0

Вы должны использовать селектор :eq() для установки только требуемого элемента tr.

var RefID = $('tr').eq(Newpos).find('td:first').html(); 
var RefName = $('tr').eq(Newpos).find('td:eq(1)').html(); 

Working Demo

+0

Не нужно искать DOM дважды, чтобы получить строку, когда она уже доступна как 'ui.item' – charlietfl

+0

ohh. не видел, чтобы ref был доставлен. –

0

Вы всегда получаете HTML с первой строки, независимо от того, какая строка была перенесена.

Поскольку ui.item является <tr>, который был перемещен, вы можете получить доступ к td, глядя в ui.item

var RefID = ui.item.find('td:first').html(); 

DEMO

Смежные вопросы