Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [JavaScript]usuwanie wierszy z tabeli po id
Randallmaster
post
Post #1





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

Ostrzeżenie: (0%)
-----


Witam,

Zaczynam dopiero zabawę z jquery i mam mały problem, nie mogę usunąć danego wiersza po id. Moje kody:

Budowa tabeli:

  1. <tbody id="elements">
  2. <tr class="element">
  3. <td name="lp[1]" align="center">1</td>
  4. <td><input name="name[1]" type="text" value="" /></td>
  5. <td></td>
  6. <td></td>
  7. <td></td>
  8. <td></td>
  9. <td></td>
  10. <td align="center">
  11. <button class="button" id="remove" style="margin: 5px 0 5px 0;"/>
  12. <img src="../ikony/usun_lp.png" />
  13. </button>
  14. </td>
  15. </tr>
  16. </tbody>]



Budowa Jquery:

  1. $(document).ready(function() {
  2.  
  3. var lp = 1;
  4. $('#remove').click(function(){
  5. $('#elements .element:td[name="lp['+lp+']"]').remove($('#elements'));
  6. });
  7. });


Ten post edytował Randallmaster 30.12.2012, 11:50:56
Go to the top of the page
+Quote Post
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Piszesz, że chcesz usunąć wiersz, ale w skrypcie używasz elementu tbody (ciało tabeli, id="elements").
[JAVASCRIPT] pobierz, plaintext
  1. $('#elements .element td[name="lp['+lp+']"]').parent().remove();
[JAVASCRIPT] pobierz, plaintext

Zwróć uwagę, że wyrzuciłem dwukropek z pierwszego selektora i selektor z metody .remove(), bo ten selektor - nie dość, że źle zapisany, to jeszcze sprawia, że .remove() przeszukuje potomków wcześniej wyselekcjonowanych elementów, które mają identyfikator "elements", tymczasem u Ciebie jest to element nadrzędny.
Go to the top of the page
+Quote Post
Randallmaster
post
Post #3





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

Ostrzeżenie: (0%)
-----


Zrobiłem takie coś:

  1. $('#remove').click(function(){
  2. var newRow = $('.element');
  3. newRow.find('td[id="lp['+lp+']"]');
  4. newRow.remove();
  5. });


Usuwa ale wszystko sad.gif nie uwzględnia danego wiersza sad.gif
Go to the top of the page
+Quote Post
mortus
post
Post #4





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


No cóż, to normalne, bo newRow to wszystkie elementy klasy element. Jeśli miałoby to być w takiej formie, to tak:
[JAVASCRIPT] pobierz, plaintext
  1. $('#remove').click(function(){
  2. var newRow = $('.element');
  3. var rowToRemove = newRow.find('td[id="lp['+lp+']"]').parent();
  4. rowToRemove.remove();
  5. });
[JAVASCRIPT] pobierz, plaintext


PS: Trzeba się zastanowić co dany selektor dokładnie określa. Radzę też korzystać z narzędzi takich jak Firebug dla Firefox-a, bo naprawdę ułatwiają życie.

Ten post edytował mortus 30.12.2012, 12:51:55
Go to the top of the page
+Quote Post
Randallmaster
post
Post #5





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

Ostrzeżenie: (0%)
-----


No właśnie po to dodaje to:

td[id="lp['+lp+']"]

aby określić dany wiersz i po tym usunąć <tr> o classie .element

kurcze siedzę już z 2 godziny i nic sad.gif

ewentualnie zrobić każdy inny przycisk?
Go to the top of the page
+Quote Post
mortus
post
Post #6





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Przecież Ci napisałem dwa rozwiązania:
[JAVASCRIPT] pobierz, plaintext
  1. // zauważ, że element
  2. $('.element td[name="lp['+lp+']"]') // to ciągle komórka tabeli, czyli HTML-owy <td></td>
  3. // natomiast elementem nadrzędnym (rodzicem) dla tego elementu jest odpowiedni wiersz, HTML-owy <tr></tr>, stąd
  4. $('.element td[name="lp['+lp+']"]').parent().remove(); // zadziała tak, jak trzeba
[JAVASCRIPT] pobierz, plaintext

Zwróć uwagę na to, że używam metody .parent() do wyselekcjonowania odpowiedniego elementu <tr></tr> o klasie element.
Go to the top of the page
+Quote Post
Randallmaster
post
Post #7





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

Ostrzeżenie: (0%)
-----


zrobiłem tak jak napisałeś za pierwszym razem i nie działa ;(
Go to the top of the page
+Quote Post
mortus
post
Post #8





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Pokaż cały kod HTML i JS.
Go to the top of the page
+Quote Post
Randallmaster
post
Post #9





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

Ostrzeżenie: (0%)
-----


budowa tabeli:
  1. <tbody id="elements">
  2. <tr class="element">
  3. <td id="lp[1]" align="center">1</td>
  4. <td><input name="name[1]" type="text" value="" /></td>
  5. <td></td>
  6. <td></td>
  7. <td></td>
  8. <td></td>
  9. <td></td>
  10. <td align="center">
  11. <button id="remove" class="button" />
  12. <img src="../ikony/usun_lp.png" />
  13. </button>
  14. </td>
  15. </tr>
  16. </tbody>


  1. $('#remove').click(function(){
  2. var newRow = $('#elements');
  3. var rowToRemove = newRow.find('td[id="lp['+lp+']"]').parent();
  4. rowToRemove.remove();
  5. });


Myślałem żeby określić id buttona i to np zrobie bedzie id="remove1" id="remove2" id="remove3" itd. ale i tak nie pobiera danego id="lp"...
gdy wpisze ręcznie
var rowToRemove = newRow.find('td[id="lp[1]"]').parent();
to usunie tylko 1 pozycje a jak wpisze 2 to juz jest blad...



Zrobiłem nawet tak aby poszczególne pozycje ręcznie usunąć, ale nawet wpisując ten kod to tak czy inaczej usuwa mi z przycisku remove1 a remove2 nie działa...

  1. $('#remove1').click(function(){
  2. var newRow = $('.element');
  3. var rowToRemove = newRow.find('td[id="lp[1]"]').parent();
  4. rowToRemove.remove();
  5. });
  6. $('#remove2').click(function(){
  7. var newRow = $('.element');
  8. var rowToRemove = newRow.find('td[id="lp[2]"]').parent();
  9. rowToRemove.remove();
  10. });
Go to the top of the page
+Quote Post
mortus
post
Post #10





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Przecież nie pisałeś, że chodzi Ci właśnie o to. Przykład. Choć sposobów może być tyle ilu programistów.
Go to the top of the page
+Quote Post
webdice
post
Post #11


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Pierwsze co źle robisz to nadawanie ID remove dla buttona który się powtarza. ID musi być unikalne. Zrób coś w rodzaju.

  1. <button class="button remove" />


i w JS:

Kod
$( 'button.remove' ).click( function()
{
  $( this ).parents( 'tr.element' )
    .remove();
});
Go to the top of the page
+Quote Post
Randallmaster
post
Post #12





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

Ostrzeżenie: (0%)
-----


webdice zrobiłem tak ale i tak nie działa ;/

$('.button').click(function(){
$(this).parents('tr.element')
.remove();
});

mortus..

Widzę że twój przykład działa, ale musiałbym przebudować dodawanie element_1, a nie można by zanzaczać tr class="element" poprzez funkcje this??
Go to the top of the page
+Quote Post
webdice
post
Post #13


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Wrzuć to na jsfiddle.

EDIT: http://jsfiddle.net/Vv88a/
Go to the top of the page
+Quote Post
Randallmaster
post
Post #14





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

Ostrzeżenie: (0%)
-----


http://jsfiddle.net/nQXwc/1/

U mnie działa dodawanie pozycji a tu nie sad.gif
Go to the top of the page
+Quote Post
webdice
post
Post #15


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




To co Ty wymyśliłeś jest bez sensu. Zrób tak jak Ci napisałem.
Go to the top of the page
+Quote Post
Randallmaster
post
Post #16





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

Ostrzeżenie: (0%)
-----


Zrobiłem tak jak mi pisałeś:

Przycisk z class="button"
  1. <button class="button" >
  2. <img src="../ikony/usun_lp.png" />


Kod js

  1. $( '.button' ).click( function()
  2. {
  3. $( this ).parents( 'tr.element' )
  4. .remove();
  5. });


i nie działa

Ten post edytował Randallmaster 30.12.2012, 14:41:20
Go to the top of the page
+Quote Post
webdice
post
Post #17


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Co jest człowieku z Tobą? Myślisz że jestem wróżką i potrafię wróżyć z kawałku kodu? Klej to na jsfiddle.
Go to the top of the page
+Quote Post
Randallmaster
post
Post #18





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

Ostrzeżenie: (0%)
-----


sorry ale już długo się nad tym męczę sad.gif

tam jest dodawanie i usuwanie pozycji.
u mnie działa dodawanie nie wiem czemu tutaj nie

http://jsfiddle.net/KByAv/
Go to the top of the page
+Quote Post
webdice
post
Post #19


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Cytat(Randallmaster @ 30.12.2012, 14:50:29 ) *
sorry ale już długo się nad tym męczę sad.gif (...)


To Cię nie zwalania z myślenia.

Cytat(Randallmaster @ 30.12.2012, 14:50:29 ) *
(...) u mnie działa dodawanie nie wiem czemu tutaj nie
http://jsfiddle.net/KByAv/


Nie dołączyłeś jQuery (po lewej masz wybór biblioteki). Skoro działa to co jeszcze chcesz?
Go to the top of the page
+Quote Post
Randallmaster
post
Post #20





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

Ostrzeżenie: (0%)
-----


AAAAAAAAAAA smile.gif

wybrałem biblioteke:

http://jsfiddle.net/KByAv/2/

I teraz tak przycisk dodaj pusta pozycje dziala,

ale nie działa przycisk usuń
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 23:07