Wstawianie diva, problem z działaniem funkcji

Wstawianie diva, problem z działaniem funkcji
AjronN
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 4 lata
  • Postów:26
0

Witam! Mam problem, wstawiam diva za pomocą innerHTML'a po evencie drop. Div jest taki sam jak ten którym dokonuje drag and dropa, lecz po pojawieniu się nowego, z tym nowym nie mogę nic zrobić, tj. nie działa funkcja usuwania go, nie działa drag and drop. Poniżej kod....

Kopiuj
<div class="stickynotefield cyan lighten-5" id="demo">
			
<div class="card p-2 cyan lighten-4 darken-1 mx-2 list-item stickynote" draggable="true" ondrop="drop()">
<div class="delnote"></div>
<h5 class="card-title">Tytuł</h5>
<textarea class="cyan lighten-4 form-control xd" onkeydown="textAreaAdjust(this)"></textarea>
</div>
			
</div>

I skrypt

Kopiuj
function makenote()
{
document.getElementById("demo").innerHTML = '<div class="card p-2 cyan lighten-4 darken-1 mx-2 list-item stickynote" draggable="true" ondrop="drop()"><div class="delnote"></div><h5 class="card-title">Tytuł</h5><textarea class="cyan lighten-4 form-control xd" onkeydown="textAreaAdjust(this)"></textarea></div>';
}

Np ta funkcja działa na pierwotnym divie ale na tym wstawionym przez skrypt juz nie

Kopiuj
$('.delnote').click(function(){
    $(this).parent().remove();
    return;
});
edytowany 1x, ostatnio: AjronN
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:minuta
  • Postów:8423
0

Domyślam się, że korzystasz z jQuery? To spróbuj on zamiast click https://api.jquery.com/on/


edytowany 1x, ostatnio: LukeJL
AjronN
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 4 lata
  • Postów:26
0
LukeJL napisał(a):

Domyślam się, że korzystasz z jQuery? To spróbuj on zamiast click https://api.jquery.com/on/

No nie bardzo to działa. Nie o to chodzi. Raczej chodzi o to, że ten nowy div jest jakby niefunkcyjny. Żadna funkcja na niego nie działa.

freemp3
  • Rejestracja:ponad 11 lat
  • Ostatnio:około godziny
  • Lokalizacja:Miechów
  • Postów:284
2

Problem polega zapewne na tym, że dodajesz zdarzenie tylko w momencie ładowania strony, przez np: $( document ).ready(function() {...});. W takim przypadku tylko do istniejących elementów zostanie dodane to zdarzenie. Dodając nowe elementy należałoby odpalić to dodawanie jeszcze raz, ale w tedy do poprzednich elementów zdarzenie zostanie dodane ponownie i będzie wykonywane kilkukrotnie. Można to rozwiązać dodając wydarzenie do całego dokumentu i delegując je jedynie do elementów o danej klasie. W tedy nawet dynamicznie dodawane elementy będą miały przypisane zdarzenie. Wygląda to tak:
$(document).on('click', 'selector', function(){})


Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.