![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 1 Dołączył: 4.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Wiatm,
Pytanie jest proste: jak dostac index <tr> wygenerowany przez datatables. Oczywiście odpowiedz jest prosta (każdy z Was powie):
to oczywiscie dziala wysmienicie jesli mamy zadeklarowane cos takiego: (oczywiscie zakladamy ze oTables jest juz zadeklarowane wczesniej jako $.dataTables();
itd ale jesli chce dostac to samo ale klikajac na konkretny element w rzędzie tabeli np: <td> <a class='rem_tr'> Remove </a> </td> itd to mam coś takiego
co wstawic w te znaki zapytania - this oczywiscie odpada. Kombinowalem z parentami i za cholere nic , POMOCY!! |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Pomógłbym Ci, ale nie znam funkcji: oTable.fnGetPosition ,dlatego mogę tylko strzelać:
Kod var aPos = oTable.fnGetPosition( $(this).parent() ); Jeżeli nie to opisz po krótko co to robi i jaką masz strukturę HTML-u. Cytat Oczywiście odpowiedz jest prosta (każdy z Was powie): var aPos = oTable.fnGetPosition.parent(this); Nie wiem dokładni czym jest fnGetPosition, ale jeśli to funkcja, która nic ciekawego nie zwraca( obiektu jQuery dokładnie) to wywali Ci błąd ![]() -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 1 Dołączył: 4.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
hejka,
nie nie,
dziala bez zarzutu, zreszta jest to rozwiazanie z przykładów ze strony developerów datatables a jezeli chodzi o strukture htmlu to mam po prostu tabele z rzadkami: czyli chodzi zeby po kliknieciu na <a> dostać zwrot indeksu tabeli dataTables. Ten post edytował Sadamowski 13.06.2012, 17:13:10 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Nadal nie wiem o co chodzi, ale znalazłem rozwiązanie
![]() Byłem blisko: Cytat var aPos = oTable.fnGetPosition( $(this).parent() ); To nie działa, gdyż funkcja oczekuje referencji do elementu DOM( elementu HTML ), a $(this).parent() zwraca obiekt jQuery, a nie HTML. Czyli trzeb jeszcze użyć funkcji get( http://api.jquery.com/get/ ) Czyli kod będzie wyglądał mniej więcej tak: Kod var aPos = oTable.fnGetPosition( $(this).parent().parent().get(0) ); Jest użyte 2 razy parent, gdyż masz strukturę tr->td->a ,a Ty wychodzisz od <a>. Nie chce mi się sprawdzać( patrz dokumentacja jQuery ), ale chyba można zastąpić parent().parent() na ładniejsze parent(2) Jakby coś nadal nie działało, to zanim napiszesz to trochę potestuj to rozwiązania, a jak to nie pomoże to umieść przykładowy kod tu: http://jsfiddle.net/ - możesz tam dołączyć biblioteki jQuery -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 1 Dołączył: 4.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
kamil4u, dzieki za odpowiedz
rozwiazanie niestety nie dziala, ale jakos jeszcze pokombinuje chetnie puscilbym to jfidlu ale niestety nie mozna tam dolaczyc biblioteki dataTable ale chwile później ( yerba-mate pomaga na mózg szczególnie z rana) pomyslałem po jakiego diabła mi ta kijowa funkcja napisze sobie własną (nie koniecznei funkcje ale taka mala procedurke), no i napisałem: var rowIndex = $(this).closest('tr').prevAll().length; albo var rowIndex = $(this).parent().parent().index(); do wyboru do koloru no i działa, jeszce raz kamilowi4u dzieki za odzew milego dnia Ten post edytował Sadamowski 14.06.2012, 08:36:07 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 349 Pomógł: 72 Dołączył: 22.01.2008 Skąd: Wadowice/Oświęcim Ostrzeżenie: (0%) ![]() ![]() |
Zamiast parent().parent() możesz użyć parents("tr") i też Ci zwróci to samo. A w przypadku zmiany struktury (dojdzie jakiś dodatkowy div itd), parent().parent() może przestać działać. Z parents("tr") nie powinno być problemu.
-------------------- "PHP to człowiek. MySQL to również człowiek."
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Jesteś na 100% pewien, że nie działa? Bo zanim napisałem robiłem proste testy:
1. http://datatables.net/api#fnGetPosition 2. klikam "Run in JS Bin" 3. Patrzę jak działa skrypt: jak klikam na td to zmienia się jego treść: Kod $(document).ready(function() { $(document).ready(function() { $('#example tbody td').click( function () { // Get the position of the current data from the node var aPos = oTable.fnGetPosition( this ); // Get the data array for this row var aData = oTable.fnGetData( aPos[0] ); // Update the data array and return the value aData[ aPos[1] ] = 'clicked'; this.innerHTML = 'clicked'; } ); // Init DataTables oTable = $('#example').dataTable(); } ); } ); 4. Usuwam większość kodu( jak kilkam wyświetla mi alert-a, a nawet 2 ): Kod $(document).ready(function() { $('#example tbody td').click( function () { alert( this ); var aPos = oTable.fnGetPosition( this ); alert( aPos ); } ); // Init DataTables oTable = $('#example').dataTable(); } ); 5. Dodaję mój kod z poprzedniego posta: Kod $(document).ready(function() { $('#example tbody td').click( function () { alert( $(this).parent("tr").get(0) ); var aPos = oTable.fnGetPosition( $(this).parent("tr").get(0) ); alert( aPos ); } ); // Init DataTables oTable = $('#example').dataTable(); } ); I jak klikam uzyskuję numer klikniętego tr. On jest tam w okolicach 6 na pierwszym <tr>, bo tak jest skonstruowana na tabela - zobacz przez firebug-a -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 28.05.2025 - 23:56 |