Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] dynamiczne tworzenie i usuwanie <div> za pomocą jQuery
Forum PHP.pl > Forum > Przedszkole
followc
witam,

próbuję stworzyć kod, który po kliknięciu w przycisk będzie wyświetlał okienko z danymi. Po wyświetleniu kliknięcie w to okienko ma je zamykać... i to wszystko udało mi się zrobić, tyle że ponowne kliknięcie w przycisk już okienka nie wyświetla.

  1. var czy_okno = 1;
  2. jQuery('.podpowiedz').click(function(){
  3.  
  4. if(czy_okno == 0){
  5. }else{
  6. var tresc_podpowiedzi = jQuery(this).find('.tresc_podpowiedzi').html();
  7.  
  8. var okno_podpowiedzi = jQuery('<div class="okno_podpowiedzi"></div>');
  9. jQuery(this).append(okno_podpowiedzi);
  10. czy_okno = 0;
  11. }
  12. });
  13. jQuery('.podpowiedz').on('click','div.okno_podpowiedzi',function(){
  14. jQuery('.okno_podpowiedzi').fadeOut(300).remove();
  15. czy_okno = 1;
  16.  
  17. });


Zmienną czy_okno dodałem, ponieważ bez niej wciąż dopisywane były tyllko kolejne okna bez ich usuwania. Wygada na to, że mój problem polega na działaniu funkcji .on() , której nie dokońca potrafię skontrolować. Wszelkie podpowiedzi mile widziane.
SmokAnalog
A nie lepiej po prostu mieć to okno jako ukryte w źródle i pokazywać/ukrywać je na żądanie?
followc
Na pewno dużo łatwiej, chciałem/chcę jednak się czegoś nauczyć.
viking
Tak na szybko:
  1. $(function() {
  2. $('.podpowiedz').on('click', function(e){
  3. e.preventDefault();
  4. if ($('.okno_podpowiedzi').length) return;
  5. var tresc_podpowiedzi = $('.tresc_podpowiedzi').html();
  6. var okno_podpowiedzi = $('<div/>', {
  7. text: tresc_podpowiedzi,
  8. 'class': 'okno_podpowiedzi'
  9. }).on('click', function(e){
  10. $(this).remove();
  11. });
  12. $(okno_podpowiedzi).insertAfter(this);
  13. });
  14. });
  15.  
  16. <div class="tresc_podpowiedzi">ksjdfhksjd hfks hdfks hdkjf hsk</div>
  17.  
  18. <btn class="podpowiedz">klik</btn>
SmokAnalog
Nie tylko łatwiej, ale też lepiej.

Twój temat to jest problem z serii: "jak zrobić coś w miarę złożonego przy małej wiedzy"? Tak naprawdę to wymaga dyskusji krok po kroku, bo w Twoim kodzie jest wiele problemów różnej natury. Co proponujesz?
followc
No dobra, wiele z tego co stworzył Viking nie do końca do mnie dociera, ale wiem przynajmniej czego google będzie dla mnie szukało w ciągu najbliższych chwil... dzięki
SmokAnalog
followc zauważyłeś wiadomość prywatną? biggrin.gif
viking
Filozofii wielkiej tam nie ma. preventDefault zapobiega wykonaniu domyślnej akcji elementu (np submit formularza). Zrób sobie console.log(e) gdzieś poniżej. Eventy opisywałem tutaj. Tworząc nowy element przez jquery możesz podać html i atrybuty jako obiekt co zrobiłem (bardziej czytelne moim zdaniem to jest niż wklejanie całego ciągu html). Dla wielu elementów będziesz mógł znaleźć aktywne okno przez $(this).find(...)
followc
Tak, po krótkiej analizie krok po kroku szybko się rozjaśniło. Tak, $(this).find(...), jest konieczne bo elementów będzie kilkanaście i stąd ten kawałek kodu, w której samej treści jeszcze nie dokładałem do okienka, bo akurat tym zająć się potrafiłem. Chodziło mi o poprawne rozwiązanie kwesti pojawiania się i znikania samego okna, co dzięki Waszej pomocy mi się udało.

Na pewno też będę częstym gościem prophp.pl

Dzięki wielkie!
SmokAnalog
No nie wiem czy dobrym pomysłem jest bycie gościem na platformie, której najnowsze newsy to "PHP 5.4 już dostępne" i "Firefox 10 oficjalnie wydany".
viking
Newsów przyznam że dawno nie pisałem tongue.gif A przepisując jakiś czas temu platformę zostawiłem w celach archiwalnych. Z reszty artykułów i "pytań" można się sporo dowiedzieć.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.