jQuery több négyzetet szűrők

szavazat
1

Van egy listát az események, ezek az események mindegyike egy meghatározott típusú, és elkezd egy adott hónapban. Van egy négyzetet csoport típusú és egy hónapig. Amit megpróbálok csinálni a használni a négyzeteket a lista szűréséhez. Megvan dolgozik egy csoport, de nem úgy tűnik, hogy ez működik, két.

Alapvetően próbálok beállítani egy osztály, amikor elrejti a lista valamelyik elemét, így tudom, hogy melyik csoport elrejtették, de úgy tűnik, hogy összezavarodnak. Az osztály nevek helyesek, de néhány példány néha nem jelennek meg újra.

Ha bárki láthatja, mit csinálok rosszul, vagy úgy gondolja, jobb megoldás, hogy nagyszerű lenne! Kösz!

Darren.

Saját 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;
});

Saját 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>
A kérdést 14/07/2009 15:27
a forrás felhasználó
Más nyelveken...                            


3 válasz

szavazat
4

Az ID attribútumok a LI érvénytelen - nem lehet őket csak számok. Javascript valószínűleg megfojtani, amikor arra törekedjünk, hogy feladatokat rájuk.

Lásd a szokásos: http://www.w3.org/TR/REC-html40/types.html#type-name

ID és NAME tokeneket kell kezdődnie írni ([A-Za-z]), és követheti tetszőleges számú betű, számjegy ([0-9]), kötőjelet ( "-"), aláhúzás ( "_") , kettőspont ( ":") és a pont ( "").

Válaszolt 14/07/2009 17:48
a forrás felhasználó

szavazat
0

Változás ezt a sort:

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

Ehhez:

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

Hogy egy hasonló változás a start_check választó. Ez horgok az clickesemény helyett changeaz eseményt a négyzeteket. Ez az esemény a tűz, hogy az egér vagy a billentyűzet segítségével megváltoztatni a négyzetet.

Azt tesztelték, hogy a számítógépemen IE7 és Firefox.

Válaszolt 14/07/2009 18:23
a forrás felhasználó

szavazat
0

OK, itt a javítást. Változás:

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

nak nek:

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

mindkét helyen.

Válaszolt 14/07/2009 21:59
a forrás felhasználó

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