• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

jak odwołac sie do elementu który powstaje pozniej

Object Storage Arubacloud
0 głosów
533 wizyt
pytanie zadane 5 stycznia 2019 w JavaScript przez BluK Początkujący (410 p.)

Hej. Mam pewien problem w jquery.
w html mam taki zapis: 

<div class="complete_task">
<ul></ul>
</div>

To jest Pierwsza funkcja która dodaje element li do ul

(".form_task").on("submit", function (e) {
completeTaskUl.append("<li>" + $task + "</li>");
});

 

I druga funkcja która chce się odwołać po najechaniu na li

$completeTaskUlLi.each(function () {
$this = $(this);
$this.on("click", function () {
console.log("pokaz");
}}
})

Jeśli  zapisze  const $completeTaskUlLi = $("odwolanie do li") tego nie widzi po li powstaje dopiero przez pierwsza funkcje

I teraz problem. Jak druga funkcja ma się odwołać do tych elementów li którego dopiero są po dodaniu po kliknięciu przez pierwsza funkcje. Jak te wszystkie li zapisze w zmienna globalna to do nich sie nie odwołam bo przy starcie ich nie ma, dopiero po wykonaniu pierwszej funkcji.
Chciałem aby pierwsza funkcja po kliknięciu i stworzeniu li zapisała je w zmiennej i przekazała globalnie abym mógł sie do nich odwołać ale nwm jak. Jak sobie z tym poradzić?

 

Kod jest skrócony, tylko najważniejsze rzeczy

1 odpowiedź

0 głosów
odpowiedź 5 stycznia 2019 przez pablop76 VIP (123,180 p.)
edycja 5 stycznia 2019 przez pablop76

Korzystasz już z metody on() ale chyba nie wiesz jak działa? Ta metoda służy do delegowania zdarzeń. Wystarczy, że podepniesz się pod listę  ul  i delegujesz zdarzenie do itema

$("ul").on("click","li",function(){
  $(this)
})

Oczywiście użyj klas zamiast tagów

komentarz 6 stycznia 2019 przez BluK Początkujący (410 p.)
edycja 6 stycznia 2019 przez BluK

Dzięki, zapomniałem o tym. Ale jak to połączyć z metodą .each()?
W elemencie ul znajduje się kilka elementów li.Jeśli najadę na jeden działa na wszystkich elementach li
 

$completeTaskUl.on("mousemove", ".item", function () {
    let $this = $("this");
    const $option = $(".complete_task .option");
    $option.fadeIn();
})

jak podłączyć do tego metode .each() czy jest jakiś inny sposób?

Tutaj jest to zadanie co pisze: https://codepen.io/jakubdofficial/pen/jXxPjz
Jeśli dodamy pare zadań pokazuje nam się lista po lewej stronie.
Po najechaniu na nią pokazuje nam się span z opcjami, o którym jest mowa.

linia 18 dodaje zadanie
linia 35 po najechaniu pokazuje spana z opcjami

 

komentarz 6 stycznia 2019 przez pablop76 VIP (123,180 p.)
No właśnie nie. $("this")  powinno wskazywać na element zdarzenia.
komentarz 6 stycznia 2019 przez BluK Początkujący (410 p.)

Tak, mam błąd, moje niedopatrzenie..
Ale mimo wszystko nie wiem jak dalej
Próbowałem tak

$completeTaskUl.on("mousemove", ".item", function () {

    let $this = $(this);
    const $option = $(".complete_task .option");
    $this.$option.fadeIn();
})
komentarz 6 stycznia 2019 przez pablop76 VIP (123,180 p.)

Za dużo kombinujesz i sam się gubisz. Jak nawołuje JQuery

Pisz mniej, rób więcej

$completeTaskUl.on("mousemove", ".item", function () {
 $(this).find(".option").fadeIn();
})

 

komentarz 7 stycznia 2019 przez BluK Początkujący (410 p.)
Super. Dzieki Ci bardzo :)

Podobne pytania

0 głosów
1 odpowiedź 547 wizyt
pytanie zadane 13 marca 2016 w JavaScript przez saliwan22 Gaduła (3,110 p.)
0 głosów
1 odpowiedź 1,094 wizyt
pytanie zadane 19 października 2017 w JavaScript przez lastavenger Obywatel (1,060 p.)
0 głosów
2 odpowiedzi 617 wizyt

92,632 zapytań

141,502 odpowiedzi

319,882 komentarzy

62,015 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...