2009-07-21 9 views
6

obecnie używam jQuery i chciałbyś jakąś pomoc na iteracja wszystkich „zaznaczone” wyboru i usunąć klasę (o nazwie „new_message”) wiersza tabeli nadrzędnej.Jquery iterację wszystkich zaznaczone pola i usuń Klasa

Mam podstawową koncepcję, ale nie mogę w pełni zrozumieć całej rzeczy.

Oto co Obecnie używam:

$("#unread_button").click(function (event) { 
event.preventDefault; 
$(":checkbox:checked").each( 
function() 
{ 
    if (this.checked) 
    { 
     var divs = $.makeArray($(this).parents("tr").attr("id")); 
    } 
$(divs).each(
    function(int) 
     { 
      $(this).removeClass("new_message"); 
     } 
    ); 
    }); 
}); 

Ostatecznie, to będzie aktualizowanie bazy danych, tak więc jeśli kod może być dostosowany do pomieścić zarówno, że byłoby świetnie.

Wszelkie wskazówki są mile widziane!

+0

możesz pokazać swój znacznik. – redsquare

Odpowiedz

6

myślę, że to będzie działać:

$('input:checkbox:checked').parents('tr').removeClass('new_message'); 

Lub jeśli to tylko bezpośredni rodzic TR, który chcesz dopasować, to:

$('input:checkbox:checked').closest('tr').removeClass('new_message'); 

jQuery wykonuje wszystkie pętle, więc powinieneś mieć wszystkie te() es.

Po wybraniu selektora ": checked" należy ponownie sprawdzić, czy element jest zaznaczony. To powinno ograniczyć wyniki selektora tylko do zaznaczonych elementów.

+0

Chciałbym użyć .closest, gdy rodzice otrzymują wszystkich przodków, a następnie filtry - wolniej – redsquare

+0

Pomyślałem o tym, ale OP nie określił, czy był to rodzic TR pierwszego poziomu, czy był wiele. A ponieważ brzmiało to, jakby obecny selektor działał, nie chciałem go zmieniać. – MacAnthony

+0

To było to. Dzięki. Użyłem również .closest, który działa równie dobrze. –

4
$("input:checked").each(function() { 
    $(this).removeClass("new_message"); 
} 

usunie odpowiedniej klasy od samych pól, tak

$(this).parent.... 

powinny działać w zależności od tego, co twój HTML wygląda

Powiązane problemy