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
b4rt3kk
post
Post #2





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Dzieję się tak, ponieważ kolejność wykonywania pętli each jest taka, a nie inna, najpierw sprawdza wszystkie 1, potem 2, itd. Musisz więc odwrócić kolejność wykonywania działań.

Dodaj divom, które chcesz sprawdzać jakąś klasę, np. checkMe. A następnie:

  1.  
  2. $('.checkMe').each(function() {
  3.  
  4. div = $(this);
  5.  
  6. $('.find').each(function() {
  7.  
  8. if ($(this).is(':checked')) {
  9. if (div.hasClass($(this).attr('id'))) {
  10. // jeśli div ma klasę o id zaznaczonego checkboxa to zostaje
  11. div.show();
  12. } else {
  13. // w przeciwnym razie wyrzucamy
  14. div.hide();
  15. }
  16. }
  17.  
  18. });
  19.  
  20. });
  21.  

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: 28.12.2025 - 20:23