Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript] Plynne Filtrowanie div'ów w JQuery
Maxie
post
Post #1





Grupa: Zarejestrowani
Postów: 82
Pomógł: 1
Dołączył: 19.10.2011

Ostrzeżenie: (0%)
-----


Witam. Potrzebuję zrobić coś w stylu wyszukiwarki. Ma to być raczej filtrowanie już istniejących divów, dzięki czemu zaoszczędzę ludziom na przechodzeniu przez strony. Mam następujące inputy typów:

-name
-selected x2
-number x2
-checkbox x25

Zacząłem od sprawdzania checkboxów. Myślałem, że sobie poradzę, ale to przekroczyło moje możliwości :< .
Tutaj macie moje "testy":

Kod
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script><div>
<form>Wyszukiwarka: <br><input class="find" type="text"><br>
  1<input class="find" id="one" type="checkbox" checked="checked">
<br>
  2<input class="find" id="two" type="checkbox" checked="checked">
</form>
  <div name="Osiem" class="one    "> "Osiem" 1  </div>
  <div name="Troll" class="two    "> "Troll" 2  </div>
  <div name="kabum" class="one two"> "kabum" 1 2</div>
  <div name="     " class="one two"> "     " 1 2</div>
</div>

Kod
$('.find').change(function() {
  
  if ( $("#one").is(':checked') ) {
    $('.one').show();
  }else{
    $('.one').hide();
  }
  
  if ( $("#two").is(':checked') ) {
    $('.two').show();
  }else{
    $('.two').hide();
  }
  
});


Więc rezultat był dobry, gdy checkbox był jeden. Przy drugim zaczęły się koligować. I jedno zaprzeczało drugiemu. W ogóle nie współgrały, gdy np. 1 był zaznaczony a 2 odznaczony to 1 & 2 było ukryte. Pomóżcie mi zrobić coś by sam sprawdzał checkboxy. i te warunki z name by był podobny chociaż. Dwa numbery mają określać minimum i maximum. A selecty to samo co checkboxy. Pomóżcie!!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Maxie
post
Post #2





Grupa: Zarejestrowani
Postów: 82
Pomógł: 1
Dołączył: 19.10.2011

Ostrzeżenie: (0%)
-----


Przecież każdy div ma takie klasy, pod jakimi checkboxami ma się pokazywać. Np. "one two". Czyli klasa "one" i "two". Ale działa pod to co później odczytał JS. Czyli jeżeli div ma dwie klasy "one two" to ta w JS ostatnia czyli "two" zostaje przypisana do tego diva i nie reaguje on na na "one" :<. Udało mi się coś zrobić z kodem by nie musieć pisać do każdego checkbox'a:

Kod
$('.find').change(function() {
  
  $(".find").each(function() {
    
    var id = $(this).attr('id');
  
    if ( $(this).is(':checked') ) {
      
      $("." + id).show();
      
    }else{
      
      $("." + id).hide();
      
    }
  
  });
  
});


Ale znowu to samo, po zaznaczeniu 1 nie reaguje div "one two" tylko 2 :<

Podgląd działania, każda linia do DIV a treść to klasy jakimi jest obdarzony tylko w języku angielskim.

Podbijam i proszę o pomoc. Rzecz jasna nie siedzę z założonymi rękoma i nie czekam na odpowiedź z kodem do skopiowania. Oto wynik moich starań. Według mnie wszystkie warunki są prawidłowe. Lecz nie działa jak powinien. Link do działa ten sam co powyżej. A oto kod źródłowy:

Kod
$('.find').change(function() {
  
  var input;
  
  $(".find[type=checkbox]").each(function() {
    
    var id = $(this).attr('id');
  
    if ( $(this).is(':checked') ) {
      
      $("." + id).show();
      
      
      
      if( $("." + id).hasClass( input = $(".find[type=checkbox]").each() ) ){
        
        if(input != id && $("#" + input).is(':checked') ){
          
          $("." + input).show();
          
        }
        
        if(input != id && $("#" + input).isnt(':checked') ){
          
          $("." + input).hide();
          
        }
        
      }
      
    }else{
      
      $("." + id).hide();
      
      if( $("." + id).hasClass( input = $(".find[type=checkbox]").each() ) ){
        
        if(input != id && $("#" + input).is(':checked') ){
          
          $("." + input).show();
          
        }
        
        if(input != id && $("#" + input).isnt(':checked') ){
          
          $("." + input).hide();
          
        }
        
      }
      
      
    }
  
  });
  
});
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 29.12.2025 - 07:09