2011-08-29 21 views
8

Wiem, że to pytanie zostało zadane wcześniej, ale wydaje mi się, że mam inny problem, niż było wcześniej omawiane. Mam tabelę i chciałbym, aby każdy wiersz miał łącze usuwania, które zanika wiersz tabeli, a następnie usuwa wiersz tabeli z DOM. Mój pierwszy problem polegał na tym, że nie mogłem uzyskać efektu fadeOut jQuery do pracy z wierszami tabeli i stwierdziłem, że faktycznie trzeba wywołać fadeOut na elementach td wiersza. Tak, tu jest mój jJavascript:FadeOut i usuń wiersz tabeli

$('span.deleteItem').live('click', function() { 
    $(this).closest('tr').find('td').fadeOut('fast', 
     function(){ 
      $(this).parents('tr:first').remove();      
     });  

    return false; 
}); 

Element rozpiętość mieszka wewnątrz td więc znaleźć najbliższy elementu tr gdy zostanie kliknięty, a następnie spadek funkcji Fadeout na każdy z jej elementów TD. Działa to świetnie.

Problem polega na tym, że w funkcji wywołania zwrotnego "to" faktycznie odwołuje się do elementu okna, a nie do indywidualnego elementu td, który został ukryty. Z mojego rozumienia "to" miało odnosić się do elementu, który został wyblakły.

Wszelkie pomysły?

+2

http://jsfiddle.net/TBMnZ/ Działa dobrze dla mnie ... – opatut

Odpowiedz

13

Grab "to" odniesienia i przekazać je na:

$('span.deleteItem').live('click', function() { 
    var here = this; 
    $(this).closest('tr').find('td').fadeOut('fast', 
     function(here){ 
      $(here).parents('tr:first').remove();      
     });  

    return false; 
}); 
5

myślę, że to jest to, czego szukasz:

$('span.deleteItem').live('click', function() { 
    var tableRow = $(this).closest('tr'); 
    tableRow.find('td').fadeOut('fast', 
     function(){ 
      tableRow.remove();      
     } 
    ); 
}); 

EDIT: Myślę Opatut is right, jak pokazano w jego jsFiddle .