jQuery flere avmerkingsboksen filtre

stemmer
1

Jeg har en liste over hendelser, disse hendelsene er hver av en bestemt type, og begynne i en bestemt måned. Jeg har en feltgruppe for typer og en for måneder. Det jeg prøver å gjøre er å bruke avmerkingsboksene til å filtrere listen. Jeg har det å jobbe med en gruppe, men kan ikke synes å få det til å fungere med to.

Jeg er i utgangspunktet prøver å sette en klasse når jeg skjule listeelementet, så jeg vet hvilken gruppe gjemte det, men det ser ut til å bli forvirret. Klassenavnene er korrekt, men noen noen ganger ting ikke kommer vist igjen.

Hvis noen kan se hva jeg gjør galt, eller tenke på en bedre løsning som ville være flott! Takk!

Darren.

Min Javascript:

$(#options input.type_check).change(function() {
    if($(this).is(':checked')) {
        $(#events li.+$(this).attr('id')).removeClass('type_hidden');
        if(!$(#events li.+$(this).attr('id')).hasClass('start_hidden')) {
            $(#events li.+$(this).attr('id')).slideDown();
        }
    } else {
        $(#events li.+$(this).attr('id')).addClass('type_hidden');
        $(#events li.+$(this).attr('id')).slideUp();
    }
    return false;
});

$(#options input.start_check).change(function() {
    if($(this).is(':checked')) {
        $(#events li.+$(this).attr('id')).removeClass('start_hidden');
        if(!$(#events li.+$(this).attr('id')).hasClass('type_hidden')) {
            $(#events li.+$(this).attr('id')).slideDown();    
        }
    } else {
        $(#events li.+$(this).attr('id')).addClass('start_hidden');
        $(#events li.+$(this).attr('id')).slideUp();
    }
    return false;
});

Min HTML:

<p>Types:</p>
<div><input name=type[] type=checkbox id=type_0 value=0 class=type_check checked=checked /><label for=type_0>Type 0</label></div>
<div><input name=type[] type=checkbox id=type_1 value=1 class=type_check checked=checked /><label for=type_1>Type 1</label></div>
<div><input name=type[] type=checkbox id=type_2 value=2 class=type_check checked=checked /><label for=type_2>Type 2</label></div>
<div><input name=type[] type=checkbox id=type_3 value=3 class=type_check checked=checked /><label for=type_3>Type 3</label></div>
<div><input name=type[] type=checkbox id=type_4 value=4 class=type_check checked=checked /><label for=type_4>Type 4</label></div>

<p>Starts:</p>
<div><input name=start[] type=checkbox id=start_072009 value=072009 class=start_check checked=checked /><label for=type_072009>July 2009</label></div>
<div><input name=start[] type=checkbox id=start_082009 value=082009 class=start_check checked=checked /><label for=type_082009>August 2009</label></div>
<div><input name=start[] type=checkbox id=start_092009 value=092009 class=start_check checked=checked /><label for=type_092009>September 2009</label></div>
<div><input name=start[] type=checkbox id=start_102009 value=102009 class=start_check checked=checked /><label for=type_102009>October 2009</label></div>

<p>Events</p>
<ul id=events>
    <li id=1768 class=type_0 start_072009>Event 1</li>
    <li id=2190 class=type_1 start_072009>Event 2</li>
    <li id=2191 class=type_2 start_072009>Event 3</li>
    <li id=1864 class=type_2 start_082009>Event 4</li>
    <li id=1679 class=type_3 start_082009>Event 5</li>
    <li id=2042 class=type_0 start_092009>Event 6</li>
    <li id=1717 class=type_4 start_092009>Event 7</li>
    <li id=1917 class=type_4 start_092009>Event 8</li>
    <li id=1767 class=type_4 start_092009>Event 9</li>
    <li id=1866 class=type_2 start_102009>Event 10</li>
</ul>
Publisert på 14/07/2009 klokken 14:27
kilden bruker
På andre språk...                            


3 svar

stemmer
4

ID-attributter på LIS er ugyldige - de kan ikke være bare tall. Javascript vil trolig choke når du prøver å gjøre oppdrag på dem.

Se standard: http://www.w3.org/TR/REC-html40/types.html#type-name

ID og NAME symboler må begynne med en bokstav ([A-Za-z]), og kan etterfølges av en rekke av bokstaver, siffer ([0-9]), bindestreker ( "-"), understreker ( "_") , kolon ( ":"), og perioder ( "").

Svarte 14/07/2009 kl. 16:48
kilden bruker

stemmer
0

Endre denne linjen:

$("#options input.type_check").change(function() {

Til dette:

$("#options input.type_check").click(function() {

Lag en tilsvarende endring i start_check velgeren. Dette kroker clickarrangementet i stedet for changearrangementet på boksene. Denne hendelsen vil brann om musen eller tastaturet brukes til å endre avmerkingsboksen.

Jeg testet den på min datamaskin ved hjelp av IE7 og Firefox.

Svarte 14/07/2009 kl. 17:23
kilden bruker

stemmer
0

OK, her er reparasjonen. Endring:

if(!$("#events li."+$(this).attr('id')).hasClass('start_hidden')) {
    $("#events li."+$(this).attr('id')).slideDown();
}

til:

$("#events li).not(".type_hidden, .start_hidden").slideDown();

på begge steder.

Svarte 14/07/2009 kl. 20:59
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more