2012-02-03 12 views
8
<li> 
<input type="checkbox" id="master" /> 
    <ul> 
    <li> 
    <input type="checkbox" /> 

$('input').bind('change', function() {}); // exists elsewhere, cannot change 

Kiedy klikam wejście najwyższym poziomie, chcę ustawić .prop('checked', true) dla wszystkich swoich dzieci, ale chcę uniknąć wyzwalania zdarzenie change wyboru dla każdego dziecka.

Jak ustawić .prop('checked', true) na wejściu bez wyzwalania change?

Edycja: (rozszerzenie)

$('#master').click(function() { 
    $(this).parent().find('input').each(function(n, in) { 
     $(in).prop('checked', true); // this triggers a change event that I need to stop 
    }); 
}); 

Odpowiedz

19

To, co opisujesz, jest domyślną funkcjonalnością. Zmiana elementu z javascript nie wywołuje zdarzenia zmiany.

http://jsfiddle.net/8JsP4/

Wskazówki jak po kliknięciu na pole wyboru na przykład, można dostać ostrzeżenie, ale jeśli klikniesz przycisk, bez ostrzeżenia.

+0

myślę odtworzyć mój objaw, trzeba by użyć wyboru górnego poziomu, by sprawdzić wszystkich niższych poziomów pól zamiast osobnego przycisku – tester

+1

nadal nie problem http://jsfiddle.net/8JsP4/1/Być może uda ci się odtworzyć problem w moim skrzypcach? –

+0

Trzymaj się, tylko spojrzał na swoją edycję, twój kod nic nie da. '$ (this) .find (...' nie zwróci nic, ponieważ 'this' to dane wejściowe, które ** nie zawierają ** niczego .. Czy twój HTML jest rzeczywiście inny od tego, co napisałeś? –

0

spróbować Aby rozpiąć na onchange słuchacza, a następnie powiązać go ponownie, gdy nieruchomość została ustawiona.

1

Teraz selektor jest skierowany do wszystkich elementów input. Możesz nadać główne pole wyboru identyfikator, a inne wspólną klasę.

<li> 
<input id="main-chk"type="checkbox" /> 
    <ul> 
    <li> 
    <input class="children" type="checkbox" /> 

    $('li:first').bind('change', function() { 
     $(this).find('li').prop('checked', 'checked'); 
    }); // exists elsewhere, cannot change 
+0

Musiałbym to zrobić bez identyfikatorów/klas. Tylko w oparciu o ul/li/input hierarchy – tester

+0

Zaktualizowano moją odpowiedź. – Jack

Powiązane problemy